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使用百度翻译进行中翻英示例
Apr 14 Python
Python中使用wxPython开发的一个简易笔记本程序实例
Feb 08 Python
Python随机生成彩票号码的方法
Mar 05 Python
python获取从命令行输入数字的方法
Apr 29 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
Jun 01 Python
Python绘制3d螺旋曲线图实例代码
Dec 20 Python
Python使用cx_Freeze库生成msi格式安装文件的方法
Jul 10 Python
python实现多进程代码示例
Oct 31 Python
python reverse反转部分数组的实例
Dec 13 Python
Python selenium页面加载慢超时的解决方案
Mar 18 Python
python将音频进行变速的操作方法
Apr 08 Python
给numpy.array增加维度的超简单方法
Jun 02 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
别人整理的服务器变量:$_SERVER
2006/10/20 PHP
phpmailer发送gmail邮件实例详解
2013/06/24 PHP
php上传图片生成缩略图(GD库)
2016/01/06 PHP
PHP导出Excel实例讲解
2016/01/24 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
2018/01/16 PHP
Yii Framework框架开发微信公众平台示例
2020/04/26 PHP
js 页面执行时间计算代码
2009/03/04 Javascript
JavaScript关于select的相关操作说明
2010/01/13 Javascript
从jQuery.camelCase()学习string.replace() 函数学习
2011/09/13 Javascript
分享精心挑选的12款优秀jQuery Ajax分页插件和教程
2012/08/09 Javascript
JavaScript实现网页图片等比例缩放实现代码及调用方式
2013/02/25 Javascript
javascript从右边截取指定字符串的三种实现方法
2013/11/29 Javascript
Jquery 实现table样式的设定
2015/01/28 Javascript
js对字符串进行编码的方法总结(推荐)
2016/11/10 Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
2017/09/27 Javascript
微信小程序 如何保持登录状态
2019/08/16 Javascript
node使用mysql获取数据库数据中文乱码问题的解决
2019/12/02 Javascript
ant design vue中日期选择框混合时间选择器的用法说明
2020/10/27 Javascript
python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程
2018/05/22 Python
Python中偏函数用法示例
2018/06/07 Python
Python简单计算给定某一年的某一天是星期几示例
2018/06/27 Python
python pygame实现五子棋小游戏
2020/10/26 Python
中国专业的综合网上购物商城:京东
2016/08/02 全球购物
酒店管理毕业生自荐信
2013/10/24 职场文书
小学教师自我鉴定
2013/11/07 职场文书
2014广电局实施党的群众路线教育实践活动方案思想汇报
2014/09/22 职场文书
企业2014年度工作总结
2014/12/10 职场文书
就业推荐表导师评语
2014/12/31 职场文书
高三英语复习计划
2015/01/19 职场文书
母亲节主题班会
2015/08/14 职场文书
《坐井观天》教学反思
2016/02/18 职场文书
《鲸》教学反思
2016/02/23 职场文书
浅析InnoDB索引结构
2021/04/05 MySQL
用Python进行栅格数据的分区统计和批量提取
2021/05/27 Python
Python安装及建立虚拟环境的完整步骤
2022/06/25 Servers