day114-Flask启动&Response内容&Request内容&模板语言

2020-04-20 18:03:35 浏览数 (1)

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>

0 人点赞