python flask框架 tempates 模版的使用
在py文件同级下 建立templates文件夹,再文件夹中编写html文件
1 向模版中传递参数:
- '''
- 1 向模板传送 参数
- '''
- @app.route('/')
- def index():
- name = 'Python'
- context = {
- 'name':'Python',
- 'age' : 18 ,
- 'num_list': [1,2,3,4,5,6,7,8,9,10]
- }
- return render_template('index.html',context=context,name=name )
- <body>
- hello world!
- <br>
- <p> {{ context }} </p>
- 姓名:{{ context['name'] }},{{ name }}
- <br>
- 年龄:{{ context['age'] }}
- <br>
- num_list:{{ context['num_list'] }}
- <br>
- {% for i in context['num_list'] %}
- <p>{{ i }}</p>
- {% endfor %}
- </body>
2 反向路由:
- '''
- 2 反向路由
- url_for(视图函数名)) 能够返回视图的相对url
- 利用redirect( url_for(视图函数) ) 实现重定向
- '''
- @app.route('/redirect')
- def redi():
- redir = url_for('index',_external=True)
- print(redir)
- return redirect(redir)
3 过滤器、自定义过滤器:
- '''
- 3 过滤器:
- safe 禁用转义 <p>{{ '<em>hello</em>' | safe }}</p>
- capitalize 首字母大写 <p>{{ 'hello' | capitalize }}</p>
- lower 小写 <p>{{ 'HELLO' | lower }}</p>
- upper 大写 <p>{{ 'hello' | upper }}</p>
- title 每个单词首字母大写 <p>{{ 'hello' | title }}</p>
- trim 去掉首位空格 <p>{{ ' hello world ' | trim }}</p>
- reverse 反转字符串 <p>{{ 'olleh' | reverse }}</p>
- format 格式化 <p>{{ '%s is %d' | format('name',17) }}</p>
- striptags 删掉html标签 <p>{{ '<em>hello</em>' | striptags }}</p>
- 列表操作:
- first 取第一个元素 <p>{{ [1,2,3,4,5,6] | first }}</p>
- last 取最后一个元素 <p>{{ [1,2,3,4,5,6] | last }}</p>
- length 获取列表长度 <p>{{ [1,2,3,4,5,6] | length }}</p>
- sum 列表求和 <p>{{ [1,2,3,4,5,6] | sum }}</p>
- sort 列表排序 <p>{{ [6,2,3,1,5,4] | sort }}</p>
- 语句块过滤:
- {% filter upper %}
- this is a Flask Jinja2 introduction
- {% endfilter %}
- 自定义过滤器: 两种方式
- 1 app.add_template_filter(函数名,过滤器名)
- 2 @app.template_filter(过滤器名)
- '''
- @app.route('/filter')
- def filter():
- str = 'abCdeF hello woRld'
- li = [1,2,5,4,3,76,65,8,9]
- return render_template('filter.html',str=str,li=li)
- # 自定义过滤器
- def hahah(li):
- return str(li)+'hahaha'
- app.add_template_filter(hahah,'hahah')
- @app.template_filter('heihei')
- def heihei(li):
- return str(li) + 'heihei'
- <body>
- {{ str }}
- <br>
- {{ str | upper }}
- <br>
- {{ str | lower }}
- <br>
- {{ str | capitalize }}
- <br>
- {{ str | title }}
- <br>
- {{ str | reverse }}
- <br>
- 列表操作:
- <br>
- {{ li }}
- <br>
- {{ li | length }}
- <br>
- {{ li | first }}
- <br>
- {{ li|last }}
- <br>
- {{ li | sort }}
- <br>
- 块过滤:
- {% filter upper %}
- hello worldQ!
- {% endfilter %}
- <br>
- 自定义过滤器:
- <br>
- {{ li | hahah }}
- <br>
- {{ li | heihei }}
- </body>
4 web表单接收参数 wtf表单的使用:
- '''
- 3 web表单 WTForms
- '''
- # 获取常规表单数据的方法
- @app.route('/form',methods=['GET','POST'])
- def form():
- if request.method == 'POST':
- username = request.form['username']
- password = request.form['password']
- print(username , password)
- return render_template('form.html')
- # 利用Flask的 WTF 实现表单
- # 配置 csrf_token 的生成项
- app.config['SECRET_KEY'] = 'python12'
- # 配置表单类
- class Form(FlaskForm):
- # user字段 text类型input框 校验输入数据
- user = StringField(validators=[DataRequired()])
- # equalto 检测 与ps2 内容是否一样
- ps = PasswordField(validators=[DataRequired(),EqualTo('ps2','err')])
- ps2=PasswordField(validators=[DataRequired()])
- submit = SubmitField()
- # 利用Flask的 WTF 实现表单
- @app.route('/WTForm',methods=['GET','POST'])
- def wtForm():
- form = Form() # 拿到一个表单对象
- if form.validate_on_submit(): # 能够自动检验 提交的表单是否经过验证 返回True或者False
- # 获取表单数据
- user = form.user.data
- ps = form.ps.data
- ps2 = form.ps2.data
- print user,ps,ps2
- if request.method == "POST":
- # flask 操作后端
- flash(u'信息发生错误!')
- print(form.validate_on_submit()) #能够检验 提交是否经过验证,返回True或者False
- return render_template('form.html',form=form)
- <body>
- 普通表单:
- <br>
- <form method='post'>
- <input type="text" name="username" placeholder='Username'>
- <br>
- <input type="password" name="password" placeholder='password'>
- <br>
- <input type="submit">
- </form>
- <hr>
- WTF表单:
- <form method="post">
- {{ form.csrf_token() }}
- {{ form.user.label }}:{{ form.user }}
- <br>
- {{ form.ps.label }}:{{ form.ps }}
- <br>
- {{ form.ps2.label }}:{{ form.ps2 }}
- <br>
- {{ form.submit }}
- <br>
- {% for info in get_flashed_messages() %}
- {{ info }}<br>
- {% endfor %}
- </form>
- </body>
4 宏的编写与使用
- '''
- 4 宏 继承 包含 模板的使用
- '''
- @app.route('/macro')
- def macro():
- return render_template('macro.html')
- <body>
- 定义 宏 和调用 宏
- <br>
- {# 定义宏 #}
- {% macro input(type,value,size) %}
- <input type="{{ type }}" name="" value="{{ value }}" size="{{ size }}">
- {% endmacro %}
- {# 调用宏 #}
- {{ input('text','登陆','60') }}
- <br>
- {{ input('password','注册','20') }}
- <br>
- 引用外部宏
- <br>
- {% import 'macros.html' as f %}
- {{ f.fun() }}
- </body>
- 外部宏:macros.html 文件:
1 {% macro fun() %}- <input type="text" name="username" placeholde="Username">
- <br>
- <input type="password" name="password" placeholde="Password">
- <br>
- <input type="submit">
- <br>
- {% endmacro %}
python flask框架 tempates 模版的使用的更多相关文章
- Linux ubantu中安装虚拟/使用环境virtualenv以及python flask框架
今天学习了python flask框架的安装过程以及使用案例,感觉网上讲的东西都没有从我们这种初学者的角度去考虑(哈哈),最后还是奉上心得: 1.安装virtualenv $ sudo apt-get ...
- python flask框架学习——开启debug模式
学习自:知了课堂Python Flask框架——全栈开发 1.flask的几种debug模式的方法 # 1.app.run 传参debug=true app.run(debug=True) #2 设置 ...
- python flask框架学习(二)——第一个flask程序
第一个flask程序 学习自:知了课堂Python Flask框架——全栈开发 1.用pycharm新建一个flask项目 2.运行程序 from flask import Flask # 创建一个F ...
- python flask框架学习(一)——准备工作和环境配置与安装
Flask装备: 学习自:知了课堂Python Flask框架——全栈开发 1.Python版本:3.6 2.Pycharm软件: 3.安装虚拟环境: (1)安装virtualenv: pip ins ...
- #3使用html+css+js制作网页 番外篇 使用python flask 框架 (II)
#3使用html+css+js制作网页 番外篇 使用python flask 框架 II第二部 0. 本系列教程 1. 登录功能准备 a.python中操控mysql b. 安装数据库 c.安装mys ...
- #3使用html+css+js制作网页 番外篇 使用python flask 框架 (I)
#3使用html+css+js制作网页 番外篇 使用python flask 框架(I 第一部) 0. 本系列教程 1. 准备 a.python b. flask c. flask 环境安装 d. f ...
- Python Flask框架路由简单实现
Python Flask框架路由的简单实现 也许你听说过Flask框架.也许你也使用过,也使用的非常好.但是当你在浏览器上输入一串路由地址,跳转至你所写的页面,在Flask中是怎样实现的,你是否感到好 ...
- Python——Flask框架——程序的结构
一.项目结构 |-flasky |-app Flask程序一般都保存在这里 |-templates/ |-static/ |main/ |-__init__.py |-errors.py |-form ...
- python Flask框架mysql数据库配置
我是一个没有笔记习惯的低级程序员,但是我还是喜欢编程,从小学就开始跟着玩电脑,对抓鸡,ddos,跳板刷钻开始了自己的IT 旅程,之后学习了各种语言,但是可惜都不没有达到精通,都是略懂一二,现在想把Py ...
随机推荐
- WordPress后台添加友情链接管理功能
其实很早之前WordPress是有这个功能的,但是伴随着wordpress的经常升级和主题的升级以及更换,有时候后台会发现没有链接管理的入口,不过还是可以通过代码还原这个功能. 将以下代码添加到您当前 ...
- Python+ Selenium自动化登录腾讯QQ邮箱实例
学习了Python语言一段时间后,在公司的项目里也使用到了python来写测试脚本,一些重复的操作都使用脚本来处理了.大大的提高工作效率,减少了一些手工重复的操作. 以下是使用unittest框架写的 ...
- CMake 条件判断
CMake简介 CMake 是做什么的? CMake是一套类似于automake的跨平台辅助项目编译的工具. 我觉得语法更加简单易用. CMake的工作流程 CMake处理顶级目录的CMakeList ...
- generator生成器iterator遍历器和yield
generator方法()返回一个iterator 使用generator时永远先去调用generator()方法 for of对iterator的调用过程(babel参照) 1,_iterator. ...
- 笔记:Maven 插件及配置详解
插件使用配置 用户能够自己选择将某个插件目标绑定到生命周期的某个阶段上,例如创建项目的源码JAR包,内置的插件绑定关系并没有涉及这个任务,mavent-source-plugin 可以帮助我们完成该任 ...
- Adriod与HTML+JS的交互
本篇主要实现的功能点: Android 调用HTML中的javascript脚本 HTML中的javascript脚本调用Android本地代码 Android 调用HTML中的javascript脚 ...
- freeMark的入门教程
1.FreeMarker支持如下转义字符: \";双引号(u0022) \';单引号(u0027) \\;反斜杠(u005C) \n;换行(u000A) \r;回车(u000D) \t;Ta ...
- MSIL实用指南-生成构造函数
本篇讲解生成构造函数的一些知识,包括创建实例构造函数.静态构造函数.调用父类构造函数. 生成构造函数的方法生成构造函数的方法是TypeBuilder.DefineConstructor(MethodA ...
- JAVA连接SAP
1.首先需要在SAP事务码SE37中新建一个可以被远程调用的RFC 事务码:SE37 新建一个函数组:输入事务码SE37回车后,来到函数构建器屏幕,到上面一排菜单栏:转到 -> 函数组 -> ...
- u3d材质Tiling和Offset意义以及TRANSFORM_TEX
1. TRANSFORM_TEX主要作用是拿顶点的uv去和材质球的tiling和offset作运算, 确保材质球里的缩放和偏移设置是正确的 下面这两个函数是等价的.o.uv = TRANSFORM ...