摘要:本篇文章主要讲述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标准字段
注意:
使用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知识库!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号