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 ...
随机推荐
- RedissonLock分布式锁源码分析
最近碰到的一个问题,Java代码中写了一个定时器,分布式部署的时候,多台同时执行的话就会出现重复的数据,为了避免这种情况,之前是通过在配置文件里写上可以执行这段代码的IP,代码中判断如果跟这个IP相等 ...
- 设计模式——适配器模式(C++实现)
#include <iostream> #include <string> using namespace std; class STTarget { publ ...
- Intellij +Maven 报错: Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match.
在intellij使用 Maven Project 测试时,运行test时看到log里的报错信息: -Dmaven.multiModuleProjectDirectory system propert ...
- Gauge----自动化测试工具
* Gauge是一个自动化测试工具,主要是通过.spec 文件指定执行的步骤,然后由Java代码去测试 安装: * 安装插件 Gauge--install-all *在IDEA中安装Gauge插件 基 ...
- ajax利用FormData异步文件提交
通常情况下,我们上传文件都会使用form表单来提交文件.但有时候,我们会有异步提交文件的需求,在这种情况下,我们就需要新建一个Formdata来提交文件,后台如果使用的是PHP的话可以使用$_FILE ...
- Linux使用ssh公钥实现免批量分发管理服务器
ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例. 管理机器外网IP10.0.0.61(内网172.16.1.61) 服务器外网1 ...
- 用js写的时钟Demo
css代码: <style type="text/css"> .a { width: 200px; height: 100px; position: absolute; ...
- 【Linux】 Linux权限管理与特殊权限
Linux权限管理 权限管理这方面,非常清楚地记得刚开始实习那会儿是仔细研究过的,不知道为什么没有笔记留痕..除了一些基本的知识点早就忘光了,无奈只好从头开始学习一遍.. ■ 基本权限知识 这部分实在 ...
- Sagit.Framework For IOS 开发框架入门教程5:消息弹窗STMsgBox
前言: 昨天刚写了一篇IT连创业的文章:IT连创业系列:产品设计之答题模块,(欢迎大伙关注!) 感觉好久没写IOS的文章了,今天趁机,来补一篇,Sagit的教程. Sagit 开源地址:https:/ ...
- js和jquery判断checkbox是否被选中
js判断: if(document.getElementById("checkboxID").checked){ alert("checkbox is checked&q ...