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实现dict版图遍历示例
Feb 19 Python
python搭建微信公众平台
Feb 09 Python
python enumerate函数的使用方法总结
Nov 15 Python
PyCharm设置SSH远程调试的方法
Jul 17 Python
Python DataFrame.groupby()聚合函数,分组级运算
Sep 18 Python
Python操作Excel插入删除行的方法
Dec 10 Python
对python dataframe逻辑取值的方法详解
Jan 30 Python
python+numpy实现的基本矩阵操作示例
Jul 19 Python
Python 动态导入对象,importlib.import_module()的使用方法
Aug 28 Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
Apr 22 Python
为什么python比较流行
Jun 19 Python
python使用pymysql模块操作MySQL
Jun 16 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
阿里云的WindowsServer2016上部署php+apache
2018/07/17 PHP
确保Laravel网站不会被嵌入到其他站点中的方法
2019/10/18 PHP
jQuery动画animate方法使用介绍
2013/05/06 Javascript
js 编码转换 gb2312 和 utf8 互转的2种方法
2013/08/07 Javascript
javascript中数组方法汇总
2015/07/07 Javascript
jquery在ie7下选择器的问题导致append失效的解决方法
2016/01/10 Javascript
jQuery实现div横向拖拽排序的简单实例
2016/07/13 Javascript
javascript中使用未定义变量或值的情况分析
2016/07/19 Javascript
js实现精确到毫秒的倒计时效果
2016/08/05 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
2016/09/08 Javascript
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
2016/12/14 Javascript
Easyui ueditor 整合解决不能编辑的问题(推荐)
2017/06/25 Javascript
react+redux的升级版todoList的实现
2017/12/18 Javascript
javascript填充默认头像方法
2018/02/22 Javascript
vue动态路由配置及路由传参的方式
2018/05/23 Javascript
Nodejs对postgresql基本操作的封装方法
2019/02/20 NodeJs
vue实现多条件和模糊搜索功能
2019/05/28 Javascript
js实现课堂随机点名系统
2019/11/21 Javascript
浅谈用Python实现一个大数据搜索引擎
2017/11/28 Python
详解python3中zipfile模块用法
2018/06/18 Python
Sanic框架Cookies操作示例
2018/07/17 Python
python语言元素知识点详解
2019/05/15 Python
Python字符串处理的8招秘籍(小结)
2019/08/13 Python
简单了解python协程的相关知识
2019/08/31 Python
Python实现淘宝秒杀功能的示例代码
2021/01/19 Python
Roots加拿大官网:加拿大休闲服饰品牌
2016/10/24 全球购物
世界首屈一指的在线男士内衣权威:HisRoom
2017/08/05 全球购物
奥兰多迪士尼门票折扣:Undercover Tourist
2018/07/09 全球购物
Nice Kicks网上商店:ShopNiceKicks.com
2018/12/25 全球购物
欧克利英国官网:Oakley英国
2019/08/24 全球购物
加拿大大码女装购物网站:Penningtons
2020/12/26 全球购物
汽修专业自荐信
2014/07/07 职场文书
2014年幼儿园工作总结
2014/11/10 职场文书
计算机实训心得体会
2016/01/14 职场文书
成人成长感言如何写?
2019/08/16 职场文书
前端canvas中物体边框和控制点的实现示例
2022/08/05 Javascript