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 图片验证码代码分享
Jul 04 Python
使用setup.py安装python包和卸载python包的方法
Nov 27 Python
Python中type的构造函数参数含义说明
Jun 21 Python
Django日志模块logging的配置详解
Feb 14 Python
python中利用xml.dom模块解析xml的方法教程
May 24 Python
浅析Python中return和finally共同挖的坑
Aug 18 Python
Python实现Kmeans聚类算法
Jun 10 Python
分享一下Python数据分析常用的8款工具
Apr 29 Python
对django layer弹窗组件的使用详解
Aug 31 Python
python opencv实现gif图片分解的示例代码
Dec 13 Python
Python垃圾回收机制三种实现方法
Apr 27 Python
Pycharm同步远程服务器调试的方法步骤
Nov 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
CI框架学习笔记(二) -入口文件index.php
2014/10/27 PHP
php实现图片文件与下载文件防盗链的方法
2014/11/03 PHP
在Debian系统下配置LNMP的教程
2015/07/09 PHP
学习php设计模式 php实现工厂模式(factory)
2015/12/07 PHP
在WordPress中获取数据库字段内容和添加主题设置菜单
2016/01/11 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
PHP去除空数组且数组键名重置的讲解
2019/02/28 PHP
PHP中单例模式的使用场景与使用方法讲解
2019/03/18 PHP
javascript scrollTop正解使用方法
2013/11/14 Javascript
jQuery中ajax的load()方法用法实例
2014/12/26 Javascript
JavaScript设计模式之适配器模式介绍
2014/12/28 Javascript
使用JS画图之点、线、面
2015/01/12 Javascript
JS往数组中添加项性能分析
2015/02/25 Javascript
jQuery关键词说明插件cluetip使用指南
2015/04/21 Javascript
scroll事件实现监控滚动条并分页显示(zepto.js)
2016/12/18 Javascript
详解如何使用webpack打包多页jquery项目
2019/02/01 jQuery
node中使用es6/7/8(支持性与性能)
2019/03/28 Javascript
使用uni-app开发微信小程序的实现
2019/12/13 Javascript
antd的select下拉框因为数据量太大造成卡顿的解决方式
2020/10/31 Javascript
[02:41]DOTA2英雄基础教程 亚巴顿
2014/01/02 DOTA
[00:35]DOTA2上海特级锦标赛 MVP.Phx战队宣传片
2016/03/04 DOTA
[02:33]2018DOTA2亚洲邀请赛赛前采访——LGD
2018/04/04 DOTA
在Python程序中操作文件之isatty()方法的使用教程
2015/05/24 Python
Python数据分析之双色球统计两个红和蓝球哪组合比例高的方法
2018/02/03 Python
python仿evething的文件搜索器实例代码
2019/05/13 Python
Python实现生成密码字典的方法示例
2019/09/02 Python
Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法
2019/09/23 Python
实现Python与STM32通信方式
2019/12/18 Python
python3列表删除大量重复元素remove()方法的问题详解
2021/01/04 Python
Html5画布_动力节点Java学院整理
2017/07/13 HTML / CSS
Vector, ArrayList, HashTable, HashMap哪些是线程安全的,哪些不是
2015/10/12 面试题
聘用意向书范本
2014/04/01 职场文书
《搭石》教学反思
2014/04/07 职场文书
2014年学校党建工作汇报材料
2014/11/02 职场文书
祝酒词范文
2015/08/12 职场文书
Nginx搭建rtmp直播服务器实现代码
2021/03/31 Servers