python-Web-flask-视图内容和模板知识点西宁街


Posted in Python onAugust 23, 2019

基本使用

#设置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中的字典遍历备忘
Jan 17 Python
详细解读Python中解析XML数据的方法
Oct 15 Python
玩转python爬虫之爬取糗事百科段子
Feb 17 Python
python 3.6.4 安装配置方法图文教程
Sep 18 Python
python将四元数变换为旋转矩阵的实例
Dec 04 Python
查看端口并杀进程python脚本代码
Dec 17 Python
Pytorch之finetune使用详解
Jan 18 Python
Python tkinter和exe打包的方法
Feb 05 Python
pycharm 设置项目的根目录教程
Feb 12 Python
pyqt5中动画的使用详解
Apr 01 Python
Python 在局部变量域中执行代码
Aug 07 Python
Python中的 Set 与 dict
Mar 13 Python
python3 selenium自动化测试 强大的CSS定位方法
Aug 23 #Python
python3 selenium自动化 下拉框定位的例子
Aug 23 #Python
python Web flask 视图内容和模板实现代码
Aug 23 #Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
Aug 23 #Python
Python 实用技巧之利用Shell通配符做字符串匹配
Aug 23 #Python
opencv 获取rtsp流媒体视频的实现方法
Aug 23 #Python
Python3从零开始搭建一个语音对话机器人的实现
Aug 23 #Python
You might like
关于js与php互相传值的介绍
2013/06/25 PHP
PHP中strlen()和mb_strlen()的区别浅析
2014/06/19 PHP
php实现判断访问来路是否为搜索引擎机器人的方法
2015/04/15 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
PHP ob缓存以及ob函数原理实例解析
2020/11/13 PHP
比较简单的一个符合web标准的JS调用flash方法
2007/11/29 Javascript
js left,right,mid函数
2008/06/10 Javascript
js 在定义的时候立即执行的函数表达式(function)写法
2013/01/16 Javascript
js Math 对象的方法
2013/09/01 Javascript
node.js中的fs.symlink方法使用说明
2014/12/15 Javascript
理解javascript回调函数
2014/12/28 Javascript
js的form表单提交url传参数(包含+等特殊字符)的两种解决方法
2016/05/25 Javascript
jquery实现放大镜简洁代码(推荐)
2017/06/08 jQuery
JavaScript引用类型RegExp基本用法详解
2018/08/09 Javascript
CryptoJS中AES实现前后端通用加解密技术
2018/12/18 Javascript
JS中this的4种绑定规则详解
2020/02/04 Javascript
javaScript代码飘红报错看不懂?读完这篇文章再试试
2020/08/19 Javascript
JQuery使用数组遍历跳出each循环
2020/09/01 jQuery
JavaScript 常见的继承方式汇总
2020/09/17 Javascript
typescript编写微信小程序创建项目的方法
2021/01/29 Javascript
[48:32]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python获得图片base64编码示例
2014/01/16 Python
Python统计文件中去重后uuid个数的方法
2015/07/30 Python
Python实现判断一行代码是否为注释的方法
2018/05/23 Python
修改 CentOS 6.x 上默认Python的方法
2019/09/06 Python
python重要函数eval多种用法解析
2020/01/14 Python
Django Channel实时推送与聊天的示例代码
2020/04/30 Python
如何基于pandas读取csv后合并两个股票
2020/09/25 Python
Python为何不支持switch语句原理详解
2020/10/21 Python
欧洲高端品牌直销店:Fashionesta
2016/08/31 全球购物
公务员爱岗敬业演讲稿
2014/08/26 职场文书
国庆横幅标语
2014/10/08 职场文书
2014年出纳工作总结与计划
2014/12/09 职场文书
大学考试作弊检讨书
2015/05/06 职场文书
SQL Server数据定义——模式与基本表操作
2021/04/05 SQL Server
nginx代理实现静态资源访问的示例代码
2022/07/07 Servers