博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python flask框架 tempates 模版的使用
阅读量:4965 次
发布时间:2019-06-12

本文共 4967 字,大约阅读时间需要 16 分钟。

在py文件同级下 建立templates文件夹,再文件夹中编写html文件

 

1 向模版中传递参数:

1 ''' 2 1 向模板传送 参数 3 ''' 4 @app.route('/') 5 def index(): 6     name = 'Python' 7     context = { 8         'name':'Python', 9         'age' : 18 ,10         'num_list': [1,2,3,4,5,6,7,8,9,10]11     }12     return render_template('index.html',context=context,name=name )
1  2 hello world! 3  4 
5

{

{ context }}

6 7 姓名:{
{ context['name'] }},{
{ name }} 8
9 年龄:{
{ context['age'] }}10
11 num_list:{
{ context['num_list'] }}12
13 {% for i in context['num_list'] %}14

{

{ i }}

15 {% endfor %}16 17 18

 

 2 反向路由:

1 ''' 2 2 反向路由 3 url_for(视图函数名)) 能够返回视图的相对url 4 利用redirect( url_for(视图函数) ) 实现重定向 5 ''' 6 @app.route('/redirect') 7 def redi(): 8     redir = url_for('index',_external=True) 9     print(redir)10     return redirect(redir)

 

 

 3 过滤器、自定义过滤器:

1 ''' 2 3 过滤器: 3  4     safe 禁用转义  

{

{ 'hello' | safe }}

5 capitalize 首字母大写

{

{ 'hello' | capitalize }}

6 lower 小写

{

{ 'HELLO' | lower }}

7 upper 大写

{

{ 'hello' | upper }}

8 title 每个单词首字母大写

{

{ 'hello' | title }}

9 trim 去掉首位空格

{

{ ' hello world ' | trim }}

10 reverse 反转字符串

{

{ 'olleh' | reverse }}

11 format 格式化

{

{ '%s is %d' | format('name',17) }}

12 striptags 删掉html标签

{

{ 'hello' | striptags }}

13 14 列表操作:15 first 取第一个元素

{

{ [1,2,3,4,5,6] | first }}

16 last 取最后一个元素

{

{ [1,2,3,4,5,6] | last }}

17 length 获取列表长度

{

{ [1,2,3,4,5,6] | length }}

18 sum 列表求和

{

{ [1,2,3,4,5,6] | sum }}

19 sort 列表排序

{

{ [6,2,3,1,5,4] | sort }}

20 21 语句块过滤:22 {% filter upper %}23 this is a Flask Jinja2 introduction24 {% endfilter %}25 26 自定义过滤器: 两种方式27 1 app.add_template_filter(函数名,过滤器名)28 2 @app.template_filter(过滤器名)29 '''30 @app.route('/filter')31 def filter():32 str = 'abCdeF hello woRld'33 li = [1,2,5,4,3,76,65,8,9]34 return render_template('filter.html',str=str,li=li)35 # 自定义过滤器36 def hahah(li):37 return str(li)+'hahaha'38 app.add_template_filter(hahah,'hahah')39 40 @app.template_filter('heihei')41 def heihei(li):42 return str(li) + 'heihei'

 

1  2 {
{ str }} 3
4 {
{ str | upper }} 5
6 {
{ str | lower }} 7
8 {
{ str | capitalize }} 9
10 {
{ str | title }}11
12 {
{ str | reverse }}13
14 列表操作:15
16 {
{ li }}17
18 {
{ li | length }}19
20 {
{ li | first }}21
22 {
{ li|last }}23
24 {
{ li | sort }}25 26
27 块过滤:28 {% filter upper %}29 hello worldQ!30 {% endfilter %}31
32 33 自定义过滤器:34
35 {
{ li | hahah }}36
37 {
{ li | heihei }}38 39 40

 

 

 4 web表单接收参数 wtf表单的使用:

1 ''' 2 3 web表单 WTForms 3 ''' 4 # 获取常规表单数据的方法 5 @app.route('/form',methods=['GET','POST']) 6 def form(): 7     if request.method == 'POST': 8         username = request.form['username'] 9         password = request.form['password']10         print(username , password)11     return render_template('form.html')12 13 14 # 利用Flask的 WTF 实现表单15 # 配置 csrf_token 的生成项16 app.config['SECRET_KEY'] = 'python12'17 # 配置表单类18 class Form(FlaskForm):19     # user字段 text类型input框 校验输入数据20     user = StringField(validators=[DataRequired()])21     # equalto 检测 与ps2 内容是否一样22     ps = PasswordField(validators=[DataRequired(),EqualTo('ps2','err')])23     ps2=PasswordField(validators=[DataRequired()])24     submit = SubmitField()25 26 # 利用Flask的 WTF 实现表单27 @app.route('/WTForm',methods=['GET','POST'])28 def wtForm():29     form = Form()  # 拿到一个表单对象30     if form.validate_on_submit(): # 能够自动检验 提交的表单是否经过验证 返回True或者False31         # 获取表单数据32         user = form.user.data33         ps = form.ps.data34         ps2 = form.ps2.data35         print user,ps,ps236     if request.method == "POST":37         # flask 操作后端38         flash(u'信息发生错误!')39 40     print(form.validate_on_submit()) #能够检验 提交是否经过验证,返回True或者False41 42 43     return render_template('form.html',form=form)
1  2 普通表单: 3 
4
5
6
7
8
9
10
11

12 WTF表单:13
14 {
{ form.csrf_token() }}15 {
{ form.user.label }}:{
{ form.user }}16
17 {
{ form.ps.label }}:{
{ form.ps }}18
19 {
{ form.ps2.label }}:{
{ form.ps2 }}20
21 {
{ form.submit }}22
23 {% for info in get_flashed_messages() %}24 {
{ info }}
25 {% endfor %}26
27 28 29 30

 

 4 宏的编写与使用

1 '''2 4 宏 继承 包含 模板的使用3 '''4 @app.route('/macro')5 def macro():6     return render_template('macro.html')
1  2 定义 宏 和调用 宏 3 
4 {# 定义宏 #} 5 {% macro input(type,value,size) %} 6 7 {% endmacro %} 8 9 {# 调用宏 #}10 {
{ input('text','登陆','60') }}11
12 {
{ input('password','注册','20') }}13 14
15 16 引用外部宏17
18 {% import 'macros.html' as f %}19 {
{ f.fun() }}20 21 22 23 24
外部宏:macros.html 文件: 1 {% macro fun() %}2     3     
4 5
6 7
8 {% endmacro %}

 

转载于:https://www.cnblogs.com/Lin-Yi/p/7765172.html

你可能感兴趣的文章
.net实例:Asp.net把UTF-8编码转换为GB2312编码
查看>>
php foreach 语法的遍历来源数组如果不是一个有效数组php会出现错误警告 Invalid argument supplied for foreach()...
查看>>
XML实体引用
查看>>
Spark实战
查看>>
20169210《Linux内核原理与分析》第六周作业
查看>>
服务器架构之大厅
查看>>
@Resource和@Autowire
查看>>
Android平台Camera实时滤镜实现方法探讨(九)--磨皮算法探讨(一)
查看>>
[转]:No connection string named ‘AnyEntities’ could be found in the application config file
查看>>
谁在关心toString的性能?
查看>>
StringUtils 工具类的常用方法
查看>>
【LeetCode题解】350_两个数组的交集Ⅱ
查看>>
【LeetCode题解】169_求众数(Majority-Element)
查看>>
自动生成Excel 报表工具类
查看>>
程序调试的步骤
查看>>
Fork开源项目之通讯框架
查看>>
网络协议篇(osi七层协议)
查看>>
UITextView文本怎样可以《居上》显示而不是默认的《居中》
查看>>
scala 基础二 scala 方法的定义和使用
查看>>
IOS系统不兼容position: fixed;属性的解决方案
查看>>