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 相关文章推荐
Python3 正在毁灭 Python的原因分析
Nov 28 Python
python 矩阵增加一行或一列的实例
Apr 04 Python
python3实现磁盘空间监控
Jun 21 Python
基于Python在MacOS上安装robotframework-ride
Dec 28 Python
python粘包问题及socket套接字编程详解
Jun 29 Python
python 函数中的内置函数及用法详解
Jul 02 Python
python 进程的几种创建方式详解
Aug 29 Python
Python图像处理二值化方法实例汇总
Jul 24 Python
Python 如何实现数据库表结构同步
Sep 29 Python
Django框架请求生命周期实现原理
Nov 13 Python
python函数超时自动退出的实操方法
Dec 28 Python
Python带你从浅入深探究Tuple(基础篇)
May 15 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
模拟OICQ的实现思路和核心程序(三)
2006/10/09 PHP
分享8个最佳的代码片段在线测试网站
2013/06/29 PHP
ThinkPHP中Session用法详解
2014/11/29 PHP
PHP getallheaders无法获取自定义头(headers)的问题
2016/03/23 PHP
php求数组全排列,元素所有组合的方法
2016/05/05 PHP
Yii2基于Ajax自动获取表单数据的方法
2016/08/10 PHP
php上传excel表格并获取数据
2017/04/27 PHP
php curl获取到json对象并转成数组array的方法
2018/05/31 PHP
location.href 在IE6中不跳转的解决方法与推荐使用代码
2010/07/08 Javascript
javascript写的日历类(基于pj)
2010/12/28 Javascript
JQuery中$之选择器用法介绍
2011/04/05 Javascript
推荐40款强大的 jQuery 导航插件和教程(上篇)
2012/09/14 Javascript
js获取控件位置以及不同浏览器中的差别介绍
2013/08/08 Javascript
图片Slider 带左右按钮的js示例
2013/08/30 Javascript
JQUERY dialog的用法详细解析
2013/12/19 Javascript
轻松创建nodejs服务器(9):实现非阻塞操作
2014/12/18 NodeJs
node.js连接MongoDB数据库的2种方法教程
2017/05/17 Javascript
前端插件之Bootstrap Dual Listbox使用教程
2019/07/23 Javascript
微信小程序学习总结(五)常见问题实例小结
2020/06/04 Javascript
Python中的魔法方法深入理解
2014/07/09 Python
python中管道用法入门实例
2015/06/04 Python
Python升级导致yum、pip报错的解决方法
2017/09/06 Python
Python爬虫实例_城市公交网络站点数据的爬取方法
2018/01/10 Python
Python3利用print输出带颜色的彩色字体示例代码
2019/04/08 Python
python读取多层嵌套文件夹中的文件实例
2020/02/27 Python
python学习将数据写入文件并保存方法
2020/06/07 Python
Keras框架中的epoch、bacth、batch size、iteration使用介绍
2020/06/10 Python
通过代码简单了解django model序列化作用
2020/11/12 Python
材料成型专业个人求职信范文
2013/09/25 职场文书
纪念建党演讲稿范文
2014/01/13 职场文书
护士自我鉴定总结
2014/03/24 职场文书
保护环境倡议书
2014/04/14 职场文书
暑期培训班策划方案
2014/08/26 职场文书
幼儿学前班评语
2014/12/29 职场文书
公司董事任命书
2015/09/21 职场文书
Django程序的优化技巧
2021/04/29 Python