flask框架的核心就是Werkzeug(负责路由转发的),Jinja2
- static就是存一些css,js文件,用来网页素材提供
templates存放html的网页文件,反馈给用户想要的一些内容 - pycharm默认是没有开启debug模式的,即你改程序,只有重新启动服务器才生效,
开启,debug模式方法
- 下面这样写,应该怎样访问呢
from flask import Flask
app = Flask(__name__)
@app.route('/index')
def hello_world():
return '嘿嘿'
if __name__ == '__main__':
app.run()
运行结果
* Debugger is active!
* Debugger PIN: 805-039-106
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
那你直接输入地址就可以访问了吗,No!
要在这个地址之后加上/index
- 带参数的
@app.route('/user/<name>') #这里接收到的name直接给了下面的函数参数
def welcome(name):
return '欢迎%s' % name
这样的话如果在地址栏输入一个姓名,就会显示如下
@app.route('/user/<int:id>')#此外还有float类型
def hello_world(id):
return '你好,%d号的会员' % id
2. 返回一个网页
from flask import Flask, render_template
@app.route('/')
def hello_world1():
#返回给用户渲染后得文件
return render_template("index.html")
动态的网页
@app.route('/')
def hello_world1():
#返回给用户渲染后得文件
time = datetime.date.today()
#下面是将var这个变量传递给网页
return render_template("index.html", var = time)
【列表】 的打印
核心代码
今天是{{ var }}, 欢迎光临
今天值班的有:<br/>
{% for name in names %} <!--用%和{括起来是控制结构,只有for和if,属于jinjia框架独有的内容-->
<li>{{ name }}<li/>
{% endfor %}
【字典】 的打印
html中
<table border="1">
{% for key, value in task.items() %}
<tr>
<td>{{ key }}</td>
<td>{{ value }}</td>
</tr>
{% endfor %}
</table>
.py中
def hello_world1():
# 返回给用户渲染后得文件
time = datetime.date.today() # 普通变量
stu = ['校长', '小张', '里斯', '王五']
task = {'任务': '打扫卫生', '时间': "今天"}
# 下面是将var这个变量传递给网页
return render_template("index.html", var=time, names=stu, task=task)
表单提交
.py中
# 表单提交
@app.route('/test/register')
def register():
return render_template('test/register.html')
@app.route('/result')
def result():
return render_template('test/result.html')
register.html中文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="http://localhost:5000/result" , method="post">
<p>姓名:<input type="text" , name="姓名"></p>
<p>年龄:<input type="text" , name="年龄"></p>
<p>专业:<input type="text" , name="专业"></p>
<p>性别:<input type="text" , name="性别"></p>
<p><input type="submit" , name="提交"></p>
</form>
</body>
</html>
result.html中的文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
提交成功
</body>
</html>
运行结果
报这个错误,那是因为如果不指定访问方式,默认是get,但是提交表单这样的访问应该是post
但是只提交了信息,怎样拿到用户输入的信息呢
首先引入这个request库
from flask import Flask, render_template, request
@app.route('/result', methods=['GET', 'POST'])
def result():
if request.method == 'POST':
result = request.form
return render_template('test/result.html', result=result)
这样将信息传递给网页,即可在网页上打印输出
result.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
提交成功
<table border="1">
{% for key,value in result.items() %}
<tr>
<td>{{ key }}</td>
<td>{{ value }}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
但是大家刚才注意到没有
怎样动态生成呢