一、网站实现
from flask import Flask
app = Flask(__name__)
# 路由解析,通过用户访问的路径,匹配相应的函数
@app.route('/')
def hello_world(): # put application's code here
return '欢迎光临!'
if __name__ == '__main__':
app.run()
页面显示
# 当前程序名字
FLASK_APP = app.py
# 当前开发环境
FLASK_ENV = development
# Debug模式:0 未开启/1 开启
FLASK_DEBUG = 0
In folder /Users/apple/Desktop/可视化
# python解释器
/Users/apple/Desktop/可视化/venv/bin/python -m flask run
* Serving Flask app 'app.py'
* Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
# 网址,Flask生成,可直接访问
* Running on http://127.0.0.1:5000
二、Debug模式开启
点击编辑配置
勾选FLASK_DEBUG,确定应用
三、补充
路径修改
@app.route("/index")
def hello():
return "你好"
界面使用网址输入内容,路由路径不能重复,用户唯一路径访问特定的函数
# 通过访问路径,获取用户的字符串参数
@app.route("/user/<name>")
def welcome1(name):
return "你好,%s" % name
# 通过访问路径,获取用户的整型参数
@app.route("/user/<int:id>")
def welcome2(id):
return "数字:%d" % id
四、html文件渲染网页
新建html文件
代码使用
from flask import Flask, render_template
app = Flask(__name__)
# 返回给用户,渲染网页
@app.route("/")
def index2():
return render_template("index.html")
if __name__ == '__main__':
app.run()
五、传递变量
import datetime
@app.route("/")
def index2():
time = datetime.date.today() # 普通变量
name = ["张三", "李四", "王二"] # 列表类型
task = { # 键值对
"任务": "打扫卫生",
"时间": "三个小时"
}
return render_template("index.html", var=time, list=name, task=task)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>测试</title>
</head>
<body>
欢迎光临,今天是{{ var }}!<br>
今天值班的有:<br>
<!--用大括号和百分号括起来的是控制结构-->
{% for data in list %}
<li>{{ data }}</li>
{% endfor %}<br>
<!--了解表格的打印-->
任务是:<br>
<table border="1">
<!--[(key,value),(key,value),(key,value)]-->
{% for key, value in task.items() %}
<tr>
<td>{{key}}</td>
<td>{{value}}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
六、表单提交
@app.route("/test/register")
def register():
return render_template("test/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" value="提交"></p>
</form>
</body>
</html>
七、提交显示
# 提交表单
@app.route("/test/register")
def register():
return render_template("test/register.html")
# 接收表单提交的路由,需要指定的methods为POST
@app.route("/result", methods=['POST', 'GET'])
def result():
if request.method == 'POST':
result = request.form
return render_template("test/result.html", result=result)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<table border="1">
<!--[(key,value),(key,value),(key,value)]-->
{% for key, value in result.items() %}
<tr>
<th>{{key}}</th>
<td>{{value}}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
网址更改
resigter中不能写确定的地址,使用修改后的方法可自动匹配
# 更改前
<form action="http://localhost:5000/result" method="post">
pass
</form>
# 更改后
<form action="{{ url_for('result') }}" method="post">
pass
</form>