1.Flask启动(启动即运行)
代码语言:javascript
复制from flask import Flask
# 指定一个 app
app = Flask(__name__)
@app.route('/') # 指定路径
def hello_world():
# 返回一个字符串
return 'Hello World '
if __name__ == '__main__':
app.run(debug=True, host="0.0.0.0", port=9527)
2.Flask的基础response
2.1 return 一个字符串
代码语言:javascript
复制from flask import Flask
@app.route('/') # 指定路径
def hello_world():
# 返回一个字符串
return 'Hello World '
if __name__ == '__main__':
app.run(debug=True, host="0.0.0.0", port=9527)
2.2 render_template(),返回一个网页
代码语言:javascript
复制from flask import Flask, render_template
app = Flask(__name__)
@app.route('/login', methods=['GET', 'POST']) # 指定 methods,只有固定的请求可以访问
def login():
if request.method == 'POST':
# 用户提交的表单数据
user_info = request.form
print(user_info)
return render_template('login.html')
if __name__ == '__main__':
app.run(debug=True, host="0.0.0.0", port=9527)
2.3 redirect(),进行一个重定向
代码语言:javascript
复制from flask import Flask, redirect
app = Flask(__name__)
@app.route('/redirect')
def red():
# 自动跳转到 login
return redirect('/login')
if __name__ == '__main__':
app.run(debug=True, host="0.0.0.0", port=9527)
2.4 sonify(),返回一个json串
代码语言:javascript
复制from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/json')
def json_test():
# 返回一个 json 类型数据串
return jsonify({'name': 'leon', 'age': 28})
if __name__ == '__main__':
app.run(debug=True, host="0.0.0.0", port=9527)
2.5 send_file(),返回一个文件
代码语言:javascript
复制from flask import Flask, send_file
app = Flask(__name__)
@app.route('/file')
def file():
# 文件可以是视频文件,GIF都可以
return send_file('1.png')
if __name__ == '__main__':
app.run(debug=True, host="0.0.0.0", port=9527)
3.request的基本内容
代码语言:javascript
复制from flask import Flask
app = Flask(__name__)
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
# 用户提交的表单数据
user_info = request.form
print(user_info)
return render_template('login.html')
if __name__ == '__main__':
app.run(debug=True, host="0.0.0.0", port=9527)
代码语言:javascript
复制from flask import request
request.method # 请求方式
request.form # 用户提交的 form 表单数据
request.args # URL中的所有数据 ?name=xx&age=xx
request.json # 存在 json 数据串
request.data # 当Content-Type无法被解析时,存放原始数据
request.url # 完整的请求地址
request.path # url path
request.host # 主机 地址
request.host_url # 将主机地址转换为httpurl
4.如同Django,JInja2支持模板渲染数据
4.1视图
代码语言:javascript
复制from flask import Flask
app = Flask(__name__)
@app.route('/for')
def for_test():
student_info = {
'class_1': {'name': 'Leon', 'age': 38, 'gender': '男'},
'class_2': {'name': 'Luis', 'age': 73, 'gender': '女'},
'class_3': {'name': 'Brown', 'age': 84, 'gender': '男'},
'class_4': {'name': 'White', 'age': 26, 'gender': '不详'},
}
return render_template('for_loop.html', student_info=student_info)
if __name__ == '__main__':
app.run(debug=True, host="0.0.0.0", port=9527)
4.2HTML中,{% for %}、{% if %}、{{ xxx }}
代码语言:javascript
复制<thead>
<tr>
<th style="padding: 0 30px">班级</th>
<th>姓名</th>
<th>年纪</th>
<th>性别</th>
</tr>
</thead>
<tbody style="border: black solid 1px">
{% for class,student in student_info.items() %}
<tr>
<td>{{ class }}</td>
<td>{{ student.name }}</td>
<td>{{ student.age }}</td>
{% if student.gender == '不详' %}
<td>性别不详</td>
{% elif student.gender == '其他' %}
<td>没有性别</td>
{% else %}
<td>{{ student.gender }}</td>
{% endif %}
</tr>
{% endfor %}
</tbody>
</table>