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中的面向对象编程的概念
Apr 27 Python
Python实现类的创建与使用方法示例
Jul 25 Python
Python实现的弹球小游戏示例
Aug 01 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
Jan 11 Python
pandas.DataFrame 根据条件新建列并赋值的方法
Apr 08 Python
在Python中pandas.DataFrame重置索引名称的实例
Nov 06 Python
在python中实现将一张图片剪切成四份的方法
Dec 05 Python
如何通过Django使用本地css/js文件
Jan 20 Python
django admin后管定制-显示字段的实例
Mar 11 Python
Python如何绘制日历图和热力图
Aug 07 Python
Python打包exe时各种异常处理方案总结
May 18 Python
Python中使用Opencv开发停车位计数器功能
Apr 04 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使用preg_split()分割特殊字符(元字符等)的方法分析
2017/02/04 PHP
JavaScript中this关键字使用方法详解
2007/03/08 Javascript
基于Jquery的文字自动截取(提供源代码)
2011/08/09 Javascript
JQUERY1.6 使用方法四 检测浏览器
2011/11/23 Javascript
addEventListener()第三个参数useCapture (Boolean)详细解析
2013/11/07 Javascript
jquery 自定义容器下雨效果可将下雨图标改为其他
2014/04/23 Javascript
控制台报错object is not a function的解决方法
2014/08/24 Javascript
浅析js预加载/延迟加载
2014/09/25 Javascript
上传文件返回的json数据会被提示下载问题解决方案
2014/12/03 Javascript
JavaScript跨平台的开源框架NativeScript
2015/03/24 Javascript
内容滑动切换效果jquery.hwSlide.js插件封装
2016/07/07 Javascript
js闭包用法实例详解
2016/12/13 Javascript
浅谈jquery fullpage 插件增加头部和版权的方法
2018/03/20 jQuery
vue项目中使用vue-i18n报错的解决方法
2019/01/13 Javascript
javascript设计模式 ? 建造者模式原理与应用实例分析
2020/04/10 Javascript
Python中函数的多种格式和使用实例及小技巧
2015/04/13 Python
python登录豆瓣并发帖的方法
2015/07/08 Python
Python的IDEL增加清屏功能实例
2017/06/19 Python
解决Python的str强转int时遇到的问题
2018/04/09 Python
解决python3 安装不了PIL的问题
2019/08/16 Python
Python爬虫 urllib2的使用方法详解
2019/09/23 Python
Python3.8对可迭代解包的改进及用法详解
2019/10/15 Python
手把手教你Python yLab的绘制折线图的画法
2019/10/23 Python
Keras搭建自编码器操作
2020/07/03 Python
python--shutil移动文件到另一个路径的操作
2020/07/13 Python
Python hashlib模块的使用示例
2020/10/09 Python
美国在线家居装饰店:Belle&June
2018/10/24 全球购物
英国领先的在线礼品店:Getting Personal
2019/09/24 全球购物
构造器Constructor是否可被override?
2013/08/06 面试题
继承权公证书
2014/04/09 职场文书
国土资源局开展党的群众路线教育实践活动整改措施
2014/09/26 职场文书
实习生矿工检讨书
2014/10/13 职场文书
高中生思想道德自我评价
2015/03/09 职场文书
加班费申请报告
2015/05/15 职场文书
分析MySQL抛出异常的几种常见解决方式
2021/05/18 MySQL
JAVA 线程池(池化技术)的实现原理
2022/04/28 Java/Android