python Web flask 视图内容和模板实现代码


Posted in Python onAugust 23, 2019

这篇文章主要介绍了python Web flask 视图内容和模板实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

基本使用

#
设置cookie值@ app.route('/set_cookie')
def set_cookie(): response = make_response("set_cookie")
response.set_cookie("name", "zhangsan")
response.set_cookie("age", "13", 10) #10秒有效期

 return response

# 获取cookie@ app.route('/get_cookie')
def get_cookie(): #获取cookie, 可以根据cookie的内容来推荐商品信息# name = request.cookies['haha']
name = request.cookies.get('name')
age = request.cookies.get('age')
return "获取cookie,name is %s, age is %s" % (name, age)# 设置SECRET_KEY
app.config["SECRET_KEY"] = "fhdk^fk#djefkj&*&*&"#
设置session@ app.route('/set_session/<path:name>')
def set_session(name): session["name"] = name
session["age"] = "13"
return "set session"#
获取session内容@ app.route('/get_session')
def get_session(): name = session.get('name')
age = session.get('age')
return "name is %s, age is %s" % (name, age)

session的存储依赖于cookie,在cookie保存的session编号

session编号生成,需要进行加密,所以需要设置secret_key secret_key的作用参考:

https://segmentfault.com/q/1010000007295395

上下文:保存的一些配置信息,比如程序名、数据库连接、应用信息等

相当于一个容器,保存了 Flask 程序运行过程中的一些信息。

Flask中有两种:请求上下文(session,cookie),应用上下文(current_app,g)

current_app,g是全局变量:

current_app.test_value='value'

g.name='abc' # g是一个响应里的全局变量可跨文件

渲染模板:

from flask
import Flask, render_template
app = Flask(__name__)# 默认省略了三个参数, static_url_path, static_folder, template_folders
def adds(a, b): return a + b@ app.route('/')
def hello_world(): #定义数据, 整数, 字符串, 元祖, 列表, 字典, 函数
num = 10
str = "hello"
tuple = (1, 2, 3, 4)
list = [5, 6, 7, 8]
dict = {
 "name": "张三",
 "age": 13
}
return render_template('file01.html', my_num = num, my_str = str, my_tuple = tuple, my_list = list, my_dict = dict, adds = adds)《 html》 {
 {}
}, {
 {
  dict[‘name']
 }
}, {
 {
  dict.get(‘name')
 }
}
和 { % %
}, {
 {
  adds(1, 2)
 }
}#
模板全局--直接使用@ app.template_global('adds')
def adds(a, b): return a + b

过滤器&自定义过滤器

{{ 字符串 | 字符串过滤器 }}
Safe,lower,upper,little,reverse,format
{#防止转义#}
{{ str1 | safe}} 或 在方法里str2 = Markup("<b>只有学习才能让我快乐</b>")
{{ 列表 | 列表过滤器 }}
First,last,length,sum,sort
def do_listreverse(li):
 #通过原列表创建一个新列表
temp_li = list(li)
# 将新列表进行返转
temp_li.reverse()
return temp_li
app.add_template_filter(do_listreverse, 'lireverse')# 或1
@ app.template_filter('lireverse')# 或2
def do_listreverse(li):
 #通过原列表创建一个新列表
temp_li = list(li)
# 将新列表进行返转
temp_li.reverse()
return temp_li
<h2>my_array 原内容:{{ my_array }}</h2>
<h2> my_array 反转:{{ my_array | lireverse }}</h2>

宏、继承、包含

宏
{% macro input(name,value='',type='text') %}
 <input type="{{type}}" name="{{name}}" value="{{value}}">
{% endmacro %}
{{ input('name',value='zs')}} // 调用
继承
父模板base:
{% block top %}
 顶部菜单
{% endblock top %}
子模板:
{% extends 'base.html' %}
{% block content %}
 需要填充的内容
{% endblock content %}
包含
{% include 'hello.html' %}
Flask 的模板中特有变量和方法
{{config.DEBUG}}
输出:True
{{request.url}}
输出:http://127.0.0.1
{{ g.name }}
{{url_for('home')}} // url_for 会根据传入的路由器函数名,返回该路由对应的URL
{{ url_for('post', post_id=1)}}
这个函数会返回之前在flask中通过flask()传入的消息的列表,flash函数的作用很简单,可以把由Python字符串表示的消息加入一个消息队列中,再使用get_flashed_message()函数取出它们并消费掉
{%for message in get_flashed_messages()%}
 {{message}}
{%endfor%}
模板规则:
<form action="{{ url_for('login') }}" method="post">
<link rel="stylesheet" href="{{ url_for('static',filename='css.css') }}" rel="external nofollow" >

web表单

if request.method == 'POST':
  # post请求的数据
  print(request.form.get('uname'))
  print(request.form.get('upass'))
  # 存session
  return redirect("/")
# get请求的数据
 print(request.args.get('uname'))
 print(request.args.get('upass'))
 # post请求的数据
 print(request.form.get('uname'))
 print(request.form.get('upass'))

CSRF

from flask_wtf import CSRFProtect
#设置SECRET_KEY
app.config["SECRET_KEY"] = "fjkdjfkdfjdk"
#保护应用程序
CSRFProtect(app)
{#设置隐藏的csrf_token,使用了CSRFProtect保护app之后,即可使用csrf_token()方法#}
 <input type="hidden" name="csrf_token" value="{{ csrf_token() }}">

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现正整数分解质因数操作示例
Aug 01 Python
Python 函数返回值的示例代码
Mar 11 Python
Python TestCase中的断言方法介绍
May 02 Python
Python中函数的基本定义与调用及内置函数详解
May 13 Python
python 实现返回一个列表中出现次数最多的元素方法
Jun 11 Python
Python编写带选项的命令行程序方法
Aug 13 Python
详解Python文件修改的两种方式
Aug 22 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
Sep 10 Python
python全局变量引用与修改过程解析
Jan 07 Python
python通用读取vcf文件的类(复制粘贴即可用)
Feb 29 Python
超级实用的8个Python列表技巧
Aug 24 Python
解决python存数据库速度太慢的问题
Apr 23 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
Aug 23 #Python
Python 实用技巧之利用Shell通配符做字符串匹配
Aug 23 #Python
opencv 获取rtsp流媒体视频的实现方法
Aug 23 #Python
Python3从零开始搭建一个语音对话机器人的实现
Aug 23 #Python
python写入数据到csv或xlsx文件的3种方法
Aug 23 #Python
自定义django admin model表单提交的例子
Aug 23 #Python
django admin 自定义替换change页面模板的方法
Aug 23 #Python
You might like
最省空间的计数器
2006/10/09 PHP
解析php中curl_multi的应用
2013/07/17 PHP
PHP实现简单汉字验证码
2015/07/28 PHP
简单谈谈PHP中的include、include_once、require以及require_once语句
2016/04/23 PHP
PHP单例模式应用示例【多次连接数据库只实例化一次】
2018/12/18 PHP
ThinkPHP 5.1 跨域配置方法
2019/10/11 PHP
JQuery弹出炫丽对话框的同时让背景变灰色
2014/05/22 Javascript
QQ空间顶部折页撕开效果示例代码
2014/06/15 Javascript
JS实现在页面随时自定义背景颜色的方法
2015/02/27 Javascript
jQuery实现当前页面标签高亮显示的方法
2015/03/10 Javascript
详解JavaScript ES6中的模板字符串
2015/07/28 Javascript
javascript面向对象程序设计高级特性经典教程(值得收藏)
2016/05/19 Javascript
JavaScript中style.left与offsetLeft的使用及区别详解
2016/06/08 Javascript
第一篇初识bootstrap
2016/06/21 Javascript
JS图片等比例缩放方法完整示例
2016/08/03 Javascript
Angular项目如何升级至Angular6步骤全纪录
2018/09/03 Javascript
Egg Vue SSR 服务端渲染数据请求与asyncData
2019/11/24 Javascript
JavaScript或jQuery 获取option value值方法解析
2020/05/12 jQuery
Vuex的热更替如何实现
2020/06/05 Javascript
浅谈js中的attributes和Attribute的用法与区别
2020/07/16 Javascript
vue实现移动端H5数字键盘组件使用详解
2020/08/25 Javascript
Python对文件操作知识汇总
2016/05/15 Python
Python+Turtle动态绘制一棵树实例分享
2018/01/16 Python
Python使用add_subplot与subplot画子图操作示例
2018/06/01 Python
Django实现支付宝付款和微信支付的示例代码
2018/07/25 Python
python调用staf自动化框架的方法
2018/12/26 Python
Python实现查找最小的k个数示例【两种解法】
2019/01/08 Python
python logging模块书写日志以及日志分割详解
2019/07/22 Python
CSS3实现div从下往上滑入滑出效果示例
2020/04/28 HTML / CSS
2014年留守儿童工作总结
2014/12/10 职场文书
十岁生日答谢词
2015/01/05 职场文书
埃及王子观后感
2015/06/16 职场文书
《角的初步认识》教学反思
2016/02/17 职场文书
jquery插件实现搜索历史
2021/04/24 jQuery
pytorch中的torch.nn.Conv2d()函数图文详解
2022/02/28 Python
以MySQL5.7为例了解一下执行计划
2022/04/13 MySQL