flask模板渲染,重定向

视图,具体请看注释
  • render_template从模板文件夹中呈现给定的模板
  • redirect重定向
  • request请求对象
  • url_for结合redirect用,反向解析url,在路由加上endpoint=‘index’

学过django后再学这个感觉要飞起来了

#                         渲染模板引擎         重定向     请求对象  反向解析重定向
from flask import Flask, render_template, redirect, request, url_for
import settings  # 导入配置

app = Flask(__name__)
app.config.from_object(settings)  # 加载配置

# 视图函数
# 主页
@app.route('/', endpoint='index')  # endpoint:反向解析
def index():
    name = '张三'
    age = 18
    names = ['aa', 'bb', 'cc','dddd', 'eeeee']
    print(locals(), type(locals()))  # 键值对形式的字典类型

    #                                       字典形式
    return render_template('index.html', content=locals())  # 渲染模板,键值对形式:content.name
    # return render_template('index.html', name=name, age=age)  # 渲染模板


# 注册,接收前端参数,get,post方法
@app.route('/register', methods=['GET', 'POST'], endpoint='register')  # 指定请求方法, 还有反向解析
def register():
    if request.method == 'POST':  # 判断请求方法
        username = request.form.get('username')  # post方法提取参数,表单
        print(username)
        # return redirect('/')  # 重定向到主页,参数:路径,状态码(302),浏览器看到状态码为302,会改变请求路径
        return redirect(url_for('index'))  # 使用反向解析重定向到主页

    # 默认get方法
    print(request.args.get('key'))  # 问号传参接收参数,get方法
    return render_template('register.html')


if __name__ == '__main__':
    print(app.url_map)  # 打印路由规则(路径)
    app.run(port=8000)  # 指定端口
前端渲染,Jinjia2

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>主页</h1>
{% if content.name %}  {# 判断 #}
    <h3>用户:{{ content.name }}----{{ content.get('name') }}</h3>  {# 字典渲染:可以用python的代码get() #}
{% endif %}

<h3>名字列表:{{ content.names.0 }}</h3>  {# 列表可以用点后面数字的方法取 #}

<ul>
{% for i in content.names %}   {# 循环 #}
    {% if i | length > 3 %}    {# 判断长度 #}
      <li>{{ loop.index }}、{{ i }}</li>  {# loop属性:loop.index0,表示从零开始 #}
    {% else %}
        <i>{{ loop.index0 }}、{{ i }}</i>
    {% endif %}
{% endfor %}
</ul>
<p>共{{ content.names | count }个</p>  {# 过滤器count:计数 #}
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值