Python语言之快速了解Flask模板
从安 2019-06-18 来源 : 阅读 1268 评论 0

摘要:本篇文章主要讲述Python语言之快速了解Flask模板,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入。

本篇文章主要讲述Python语言之快速了解Flask模板,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入。

Python语言之快速了解Flask模板

模板

模板导入就是将另一个模板加载到当前模板中,直接渲染。模板继承和类的继承含义是一样的,主要是为了提高代码重用,减轻开发人员的工作量。 典型应用:网站的头部、尾部信息。

模板导入 

 语法

{% include(‘模板名称’) %} 

{% include(‘目录/模板名称’) %}

 使用 

忽略模板文件不存在时的错误

{% include 'footer.html' ignore missing %}

#也可以组成模板列表,会按照顺序依次加载

{% include ['footer.html','bottom.html','end.html'] ignore missing %}`


模板继承 

如果发现在多个模板中某些内容相同,那就应该把这段内容定义到父模板中。
标签block:用于在父模板中预留区域,留给子模板填充差异性的内容,名字不能相同。 为了更好的可读性,建议给endblock标签写上名字,这个名字与对应的block名字相同。父模板中也可以使用上下文中传递过来的数据。

 

l 父模板 

{%block 名称%}

预留区域,可以编写默认内容,也可以没有默认内容{%endblock %}

 

l 子模板 

标签extends:继承,写在子模板文件的第一行。{% extends "父模板路径"%}

如果子模版没有填充,则使用父模版定义的默认值。如果有就是用子模板的实际填充内容{%block 名称%}

实际填充内容{%endblock %}

 

模板宏

在Flask的模板中有一个特性和Django内不同,这个特性就是宏。宏的功能和python中的函数类似。

 

l 声明一个宏 

{% macro 宏的名字(参数) %}

内容{% endmacro %}

 

l 调用宏 

{{  宏的名字(参数)   }}

 

在python函数可以实现代码复用的作用,在模板中宏也有类似的作用
模板宏的使用和python中的函数的使用也类似,参数也是类似的。模板宏不常用,如果想看详细内容 点这里(是csdn的一篇博客)

 

模板表单 Flask-WTF

当前端使用form表单进行参数传递时候,前端一般都会用js来校验用户输入的参数是否合法。作为后端,不能依赖前端的校验。要在前端校验的基础上在进行一遍校验,防止程序出现异常。
当参数过多时,我们要对每个参数都进行校验,显得非常麻烦。在Flask中我们可以用Flask-WTF帮助我们快速校验。Flask-WTF是集成WTForms,并带有 csrf 令牌的安全表单和全局的 csrf 保护的功能。
安装

pip install flsk-wtf
 

1. WTForms支持的HTML标准字段


Python语言之快速了解Flask模板

注意:

使用Flask-WTF需要配置参数SECRET_KEY。
SECRET_KEY用来生成加密令牌,当CSRF激活的时候,该设置会根据设置的密匙生成加密

具体实现:

from flask import Flask, render_template, redirect, url_for, session, request, flash#
导入wtf扩展的表单类
from flask_wtf import FlaskForm
# 导入自定义表单需要的字段from wtforms import SubmitField, StringField, PasswordField
# 导入wtf扩展提供的表单验证器
from wtforms.validators import DataRequired, EqualTo
 
app = Flask(__name__)
# 一定要记得配置SECRET_KEY!!!!!!!!!!!!!!
app.config['SECRET_KEY'] = 'python is good'
 
# 自定义表单类,文本字段、密码字段、提交按钮
class Login(FlaskForm):
    name = StringField(label='用户:', validators=[DataRequired('用户名不能为空')])
    pwd = PasswordField(label='密码', validators=[DataRequired('密码不能为空'), EqualTo('pwd1', '密码不一样')])
    pwd1 = PasswordField(label='确认密码', validators=[DataRequired('密码不能为空')])
    submit = SubmitField('提交')
 
@app.route('/login')
def login():
    return render_template('login.html')
 
# 定义根路由视图函数,生成表单对象,获取表单数据,进行表单数据验证@app.route('/', methods=['GET', 'POST'])
def index():
    form = Login()
    # 如果前端页面的输入的有错误,validate_on_submit是为flase
    if form.validate_on_submit():
        name = form.name.data
        pwd = form.pwd.data
        pwd1 = form.pwd1.data
        print(name, pwd, pwd1)
        return redirect(url_for('login'))
    return render_template('index.html', form=form)
 
if __name__ == '__main__':
    app.run(debug=True)

模板页面:

        Title    // 这个也是很重要的
    
 
    {{ form.csrf_token() }}
 
    {{ form.name.label }}
    {{ form.name }} 
    {% for msg in form.name.errors %}
        {{ msg }}    {% endfor %}
 
    {{ form.pwd.label }}
    {{ form.pwd }} 
    {% for msg in form.pwd.errors %}
        {{ msg }}    {% endfor %}
 
    {{ form.pwd1.label }}
    {{ form.pwd1 }} 
    {% for msg in form.pwd1.errors %}
        {{ msg }}    {% endfor %}
 
    {{ form.submit() }}    
    {% for x in get_flashed_messages() %}
        {{ x }}
    {% endfor %}

 

本文由职坐标整理发布,学习更多的相关知识,请关注职坐标IT知识库!

本文由 @从安 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程