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 相关文章推荐
一个检测OpenSSL心脏出血漏洞的Python脚本分享
Apr 10 Python
实例讲解Python中函数的调用与定义
Mar 14 Python
Python基础篇之初识Python必看攻略
Jun 23 Python
Python按行读取文件的实现方法【小文件和大文件读取】
Sep 19 Python
Python对列表中的各项进行关联详解
Aug 15 Python
python 设置文件编码格式的实现方法
Dec 21 Python
python一键去抖音视频水印工具
Sep 14 Python
python实现自动化上线脚本的示例
Jul 01 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
Aug 26 Python
python自动结束mysql慢查询会话的实例代码
Oct 27 Python
python 代码实现k-means聚类分析的思路(不使用现成聚类库)
Jun 01 Python
python基本算法之实现归并排序(Merge sort)
Sep 01 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
ajax php 实现写入数据库
2009/09/02 PHP
php实现的支持断点续传的文件下载类
2014/09/23 PHP
分享PHP函数实现数字与文字分页代码
2015/07/28 PHP
PHP yii实现model添加默认值的方法(两种方法)
2016/11/10 PHP
PHP Socket网络操作类定义与用法示例
2017/08/30 PHP
基于jquery自定义的漂亮单选按钮RadioButton
2013/11/19 Javascript
js获取select默认选中的Option并不是当前选中值
2014/05/07 Javascript
c#+jquery实现获取radio和checkbox的值
2020/09/12 Javascript
JavaScript实现文字与图片拖拽效果的方法
2015/02/16 Javascript
JavaScript中函数(Function)的apply与call理解
2015/07/08 Javascript
JS提交form表单实例分析
2015/12/10 Javascript
jQuery Validate初步体验(一)
2015/12/12 Javascript
node.js实现爬虫教程
2020/08/25 Javascript
Bootstrap富文本组件wysiwyg数据保存到mysql的方法
2016/05/09 Javascript
Vue-Cli中自定义过滤器的实现代码
2017/08/12 Javascript
深入掌握 react的 setState的工作机制
2017/09/27 Javascript
原生JS与CSS实现软件卸载对话框功能
2019/12/05 Javascript
vue 判断元素内容是否超过宽度的方式
2020/07/29 Javascript
Vue toFixed保留两位小数的3种方式
2020/10/23 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
2021/01/28 Javascript
[17:00]DOTA2 HEROS教学视频教你分分钟做大人-帕克
2014/06/10 DOTA
python更改已存在excel文件的方法
2018/05/03 Python
Python Datetime模块和Calendar模块用法实例分析
2019/04/15 Python
Python和Java的语法对比分析语法简洁上python的确完美胜出
2019/05/10 Python
Pytest如何使用skip跳过执行测试
2020/08/13 Python
html5播放视频且动态截图实现步骤与代码(支持safari其他未测试)
2013/01/06 HTML / CSS
翻新二手苹果产品的网络领导者:Mac of all Trades
2017/12/19 全球购物
英国可持续奢侈品包包品牌:Elvis & Kresse
2018/08/05 全球购物
体育教师工作总结的自我评价
2013/10/10 职场文书
总经理文秘岗位职责
2014/02/03 职场文书
助人为乐好少年事迹材料
2014/08/18 职场文书
车辆年检委托书范本
2014/10/14 职场文书
贵阳市党的群众路线教育实践活动党(工)委领导班子整改方案
2014/10/26 职场文书
毕业论文致谢格式模板
2015/05/14 职场文书
幼儿园小班教学反思
2016/03/03 职场文书
Win11怎么跳过联网验机 ?Win11跳过联网验机激活教程
2022/04/05 数码科技