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学习数据结构实例代码
May 11 Python
实例解析Python中的__new__特殊方法
Jun 02 Python
CentOS下使用yum安装python-pip失败的完美解决方法
Aug 16 Python
django页面跳转问题及注意事项
Jul 18 Python
微信公众号token验证失败解决方案
Jul 22 Python
pytest中文文档之编写断言
Sep 12 Python
通过 Django Pagination 实现简单分页功能
Nov 11 Python
用python解压分析jar包实例
Jan 16 Python
基于Python获取照片的GPS位置信息
Jan 20 Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
Apr 13 Python
selenium自动化测试入门实战
Dec 21 Python
Python如何使用循环结构和分支结构
Apr 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
php时区转换转换函数
2014/01/07 PHP
根据ip调用新浪api获取城市名并转成拼音
2014/03/07 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
Yii框架学习笔记之session与cookie简单操作示例
2019/04/30 PHP
js文件中调用js的实现方法小结
2009/10/23 Javascript
js工具方法弹出蒙版
2013/05/08 Javascript
JavaScript:Div层拖动效果实例代码
2013/08/06 Javascript
js读取注册表的键值示例
2013/09/25 Javascript
IE中的File域无法清空使用jQuery重设File域
2014/04/24 Javascript
jQuery中get方法用法分析
2016/12/07 Javascript
Angular 4依赖注入学习教程之InjectToken的使用(八)
2017/06/04 Javascript
JS实现页面内跳转的简单代码
2017/09/03 Javascript
vue.js项目 el-input 组件 监听回车键实现搜索功能示例
2018/08/25 Javascript
监听angularJs列表数据是否渲染完毕的方法示例
2018/11/07 Javascript
Nodejs中怎么实现函数的串行执行
2019/03/02 NodeJs
layer的prompt弹出框,点击回车,触发确定事件的方法
2019/09/06 Javascript
Vue+ElementUI table实现表格分页
2019/12/14 Javascript
JS实现电脑虚拟键盘打字测试
2020/06/24 Javascript
在Python中用get()方法获取字典键值的教程
2015/05/21 Python
详解使用python的logging模块在stdout输出的两种方法
2017/05/17 Python
Django 解决阿里云部署同步数据库报错的问题
2020/05/14 Python
pycharm永久激活超详细教程
2020/10/29 Python
一款恶搞头像特效的制作过程 利用css3和jquery
2014/11/21 HTML / CSS
html5 canvas-1.canvas介绍(hello canvas)
2013/01/07 HTML / CSS
HTML5新增的Css选择器、伪类介绍
2013/08/07 HTML / CSS
机械设计专业应届生求职信
2013/11/21 职场文书
聚美优品广告词改编
2014/03/14 职场文书
工程承包协议书
2014/04/22 职场文书
保密工作目标责任书
2014/07/28 职场文书
2015元旦节寄语
2014/12/08 职场文书
2014年检察院个人工作总结
2014/12/09 职场文书
中班下学期个人总结
2015/02/12 职场文书
请病假条范文
2015/08/17 职场文书
大学生饮品店创业计划书范文
2019/07/10 职场文书
实习员工转正的评语汇总,以备不时之需
2019/12/17 职场文书
python实现ROA算子边缘检测算法
2021/04/05 Python