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编写一个简单的tic-tac-toe游戏的教程
Apr 16 Python
Python实现在matplotlib中两个坐标轴之间画一条直线光标的方法
May 20 Python
Python连接phoenix的方法示例
Sep 29 Python
快速查询Python文档方法分享
Dec 27 Python
Python Series从0开始索引的方法
Nov 06 Python
Python学习笔记之For循环用法详解
Aug 14 Python
Python 中的 import 机制之实现远程导入模块
Oct 29 Python
python加密解密库cryptography使用openSSL生成的密匙加密解密
Feb 11 Python
tensorflow多维张量计算实例
Feb 11 Python
Python生成pdf目录书签的实例方法
Oct 29 Python
numpy实现RNN原理实现
Mar 02 Python
python3 删除所有自定义变量的操作
Apr 08 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
解析coreseek for sphinx的使用
2013/06/21 PHP
JavaScript创建命名空间的5种写法
2014/06/24 PHP
PHP使用curl_multi实现并发请求的方法示例
2018/04/29 PHP
YII2框架中查询生成器Query()的使用方法示例
2020/03/18 PHP
JS 统计时间
2021/03/09 Javascript
jquery滚动加载数据的方法
2015/03/09 Javascript
JQuery实现动态适时改变字体颜色的方法
2015/03/10 Javascript
jQuery 判断图片是否加载完成方法汇总
2015/08/10 Javascript
使用jquery.qrcode.min.js实现中文转化二维码
2016/03/11 Javascript
video.js 实现视频只能后退不能快进的思路详解
2018/08/09 Javascript
当vue路由变化时,改变导航栏的样式方法
2018/08/22 Javascript
Angular6新特性之Angular Material
2018/12/28 Javascript
jQuery+ajax实现批量删除功能完整示例
2019/06/06 jQuery
对layui初始化列表的CheckBox属性详解
2019/09/13 Javascript
js实现图片无缝循环轮播
2019/10/28 Javascript
JS实现图片幻灯片效果代码实例
2020/05/21 Javascript
基于Vue.js+Nuxt开发自定义弹出层组件
2020/10/09 Javascript
原生js实现自定义滚动条
2021/01/20 Javascript
[01:11:02]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python基于PycURL实现POST的方法
2015/07/25 Python
利用 Monkey 命令操作屏幕快速滑动
2016/12/07 Python
python中map()函数的使用方法示例
2017/09/29 Python
python 设置文件编码格式的实现方法
2017/12/21 Python
python tkinter 设置窗口大小不可缩放实例
2020/03/04 Python
PyCharm vs VSCode,作为python开发者,你更倾向哪种IDE呢?
2020/08/17 Python
MoviePy简介及Python视频剪辑自动化
2020/12/18 Python
中国双语服务优势的在线购票及活动平台:247tickets
2018/10/26 全球购物
Wiggle新西兰:自行车、跑步、游泳
2020/05/06 全球购物
医学生求职自荐信
2013/10/25 职场文书
会计职业生涯规划书
2014/01/13 职场文书
医德考评自我评价
2014/09/14 职场文书
2014年科普工作总结
2014/12/06 职场文书
入党现实表现材料
2014/12/23 职场文书
开会通知
2015/04/20 职场文书
联欢会开场白
2015/06/01 职场文书
Golang连接并操作MySQL
2022/04/14 MySQL