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实现GUI学生信息管理系统
Apr 05 Python
python写一个md5解密器示例
Feb 23 Python
Python3 安装PyQt5及exe打包图文教程
Jan 08 Python
postman模拟访问具有Session的post请求方法
Jul 15 Python
Python实现朴素贝叶斯的学习与分类过程解析
Aug 24 Python
Python将视频或者动态图gif逐帧保存为图片的方法
Sep 10 Python
100行Python代码实现每天不同时间段定时给女友发消息
Sep 27 Python
Python time库基本使用方法分析
Dec 13 Python
python中p-value的实现方式
Dec 16 Python
Python2 与Python3的版本区别实例分析
Mar 30 Python
在python中修改.properties文件的操作
Apr 08 Python
python列表的逆序遍历实现
Apr 20 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
PHP脚本数据库功能详解(下)
2006/10/09 PHP
PHP程序开发范例学习之表单 获取文本框的值
2011/08/08 PHP
php读取大文件示例分享(文件操作类)
2014/04/13 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
在IE中调用javascript打开Excel的代码(downmoon原作)
2007/04/02 Javascript
一些常用的JS功能函数(2009-06-04更新)
2009/06/04 Javascript
IE6-IE9不支持table.innerHTML的解决方法分享
2012/09/14 Javascript
编写针对IE的JS代码两种编写方法
2013/01/30 Javascript
JavaScript弹出窗口方法汇总
2014/08/12 Javascript
jQuery往textarea中光标所在位置插入文本的方法
2015/06/26 Javascript
详解JavaScript编程中正则表达式的使用
2015/10/25 Javascript
js去字符串前后空格的实现方法
2016/02/26 Javascript
js中window.open的参数及注意注意事项
2016/07/06 Javascript
AngularJS动态加载模块和依赖的方法分析
2016/11/08 Javascript
Vue.js第四天学习笔记
2016/12/02 Javascript
js实现定时进度条完成后切换图片
2017/01/04 Javascript
详解Vue.js 2.0 如何使用axios
2017/04/21 Javascript
vue2.0路由切换后页面滚动位置不变BUG的解决方法
2018/03/14 Javascript
JS使用tween.js动画库实现轮播图并且有切换功能
2018/07/17 Javascript
谈谈React中的Render Props模式
2018/12/06 Javascript
[01:01:25]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第三局
2016/02/27 DOTA
[01:01]2020完美高校联赛(秋)西安落幕
2021/03/11 DOTA
Python的另外几种语言实现
2015/01/29 Python
Python中用于检查英文字母大写的isupper()方法
2015/05/19 Python
Python函数式编程指南(二):从函数开始
2015/06/24 Python
Python字符串处理实例详解
2017/05/18 Python
详解python pandas 分组统计的方法
2019/07/30 Python
详解python itertools功能
2020/02/07 Python
基于Python pyecharts实现多种图例代码解析
2020/08/10 Python
Django Auth用户认证组件实现代码
2020/10/13 Python
python跨文件使用全局变量的实现
2020/11/17 Python
AmazeUI 模态窗口的实现代码
2020/08/18 HTML / CSS
2014年学生会干事工作总结
2014/11/07 职场文书
四群教育工作总结
2015/08/10 职场文书
Python还能这么玩之只用30行代码从excel提取个人值班表
2021/06/05 Python
Oracle锁表解决方法的详细记录
2022/06/05 Oracle