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使用chardet判断字符编码
May 09 Python
Python文件操作之合并文本文件内容示例代码
Sep 19 Python
基于Django用户认证系统详解
Feb 21 Python
在python3.5中使用OpenCV的实例讲解
Apr 02 Python
python读取csv文件并把文件放入一个list中的实例讲解
Apr 27 Python
Python django框架应用中实现获取访问者ip地址示例
May 17 Python
python实现指定ip端口扫描方式
Dec 17 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
Feb 07 Python
python怎么调用自己的函数
Jul 01 Python
Python项目打包成二进制的方法
Dec 30 Python
python爬虫爬取图片的简单代码
Jan 18 Python
Python词云的正确实现方法实例
May 08 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
PHP生成短网址方法汇总
2016/07/12 PHP
基于PHP微信红包的算法探讨
2016/07/21 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
2016/09/11 PHP
php  单例模式详细介绍及实现源码
2016/11/05 PHP
PHP Laravel中的Trait使用方法
2019/01/20 PHP
php提供实现反射的方法和实例代码
2019/09/17 PHP
Laravel find in set排序实例
2019/10/09 PHP
js实现在字符串中提取数字
2013/11/05 Javascript
js通过location.search来获取页面传来的参数
2014/09/11 Javascript
js实现鼠标感应图片展示的方法
2015/02/27 Javascript
极力推荐一款小巧玲珑的可视化编辑器bootstrap-wysiwyg
2016/05/27 Javascript
很实用的js选项卡切换效果
2016/08/12 Javascript
Vue.js常用指令的使用小结
2017/06/23 Javascript
vue 怎么创建组件及组件使用方法
2017/07/27 Javascript
js推箱子小游戏步骤代码解析
2018/01/10 Javascript
基于node.js实现爬虫的讲解
2019/02/18 Javascript
小试小程序云开发(小结)
2019/06/06 Javascript
JavaScript队列结构Queue实现过程解析
2020/03/07 Javascript
JavaScript enum枚举类型定义及使用方法
2020/05/15 Javascript
python 字符串split的用法分享
2013/03/23 Python
使用Python的web.py框架实现类似Django的ORM查询的教程
2015/05/02 Python
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
2017/02/14 Python
Python实现朴素贝叶斯分类器的方法详解
2018/07/04 Python
python使用ctypes调用扩展模块的实例方法
2020/01/28 Python
Python列表嵌套常见坑点及解决方案
2020/09/30 Python
Python实现微信表情包炸群功能
2021/01/28 Python
细说CSS3中的选择符
2008/10/17 HTML / CSS
使用canvas生成含有微信头像的邀请海报没有微信头像问题
2019/10/29 HTML / CSS
酒店led欢迎词
2014/01/09 职场文书
反洗钱宣传活动总结
2014/08/26 职场文书
2014年党员自我评议对照检查材料
2014/09/20 职场文书
党员对照检查剖析材料
2014/10/13 职场文书
优秀教育工作者事迹材料
2014/12/24 职场文书
2015年教育实习工作总结
2015/04/24 职场文书
傲慢与偏见读书笔记
2015/06/29 职场文书
Python 如何安装Selenium
2021/05/06 Python