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中logging模块的用法实例
Sep 29 Python
详解Python中的条件判断语句
May 14 Python
Python爬虫利用cookie实现模拟登陆实例详解
Jan 12 Python
Collatz 序列、逗号代码、字符图网格实例
Jun 22 Python
基于python3 OpenCV3实现静态图片人脸识别
May 25 Python
python用post访问restful服务接口的方法
Dec 07 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
Sep 15 Python
解决windows下python3使用multiprocessing.Pool出现的问题
Apr 08 Python
Django数据统计功能count()的使用
Nov 30 Python
Python Pandas list列表数据列拆分成多行的方法实现
Dec 14 Python
python爬取微博评论的实例讲解
Jan 15 Python
python Tkinter的简单入门教程
Apr 11 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 错误处理经验分享
2011/10/11 PHP
php 开发中加密的几种方法总结
2017/03/22 PHP
从JavaScript的函数重名看其初始化方式
2007/03/08 Javascript
javascript的alert box在java中如何显示多行
2014/05/18 Javascript
JS实现让网页背景图片斜向移动的方法
2015/02/25 Javascript
JavaScript实现的一个倒计时的类
2015/03/12 Javascript
简介JavaScript中的setHours()方法的使用
2015/06/11 Javascript
JS+DIV+CSS实现仿表单下拉列表效果
2015/08/18 Javascript
学习JavaScript设计模式(接口)
2015/11/26 Javascript
jQuery Tags Input Plugin(添加/删除标签插件)详解
2016/06/20 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
2016/07/08 Javascript
JavaScript实现旋转轮播图
2020/08/18 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
2018/04/01 Javascript
JS装饰器函数用法总结
2018/04/21 Javascript
vue中引入mxGraph的步骤详解
2019/05/17 Javascript
jQuery 选择器用法实例分析【prev + next】
2020/05/22 jQuery
解决Vue项目中tff报错的问题
2020/10/21 Javascript
Vue过滤器,生命周期函数和vue-resource简单介绍
2021/01/12 Vue.js
Python实现的矩阵类实例
2017/08/22 Python
Python基本语法之运算符功能与用法详解
2019/10/22 Python
PyCharm常用配置和常用插件(小结)
2021/02/06 Python
用CSS3和table标签实现一个圆形轨迹的动画的示例代码
2019/01/17 HTML / CSS
For Art’s Sake官网:手工制作的奢华眼镜
2018/12/15 全球购物
线程问题:wait()方法是定义在哪个类里面
2015/07/07 面试题
中专生毕业自我鉴定
2013/11/01 职场文书
求职简历中个人的自我评价
2013/12/01 职场文书
求职简历的自我评价
2014/01/31 职场文书
自行车广告词大全
2014/03/21 职场文书
孝敬父母的演讲稿
2014/05/14 职场文书
践行三严三实心得体会
2014/10/13 职场文书
简单租房协议书(范本)
2014/10/13 职场文书
捐资助学感谢信
2015/01/21 职场文书
描写九月优美句子(39条)
2019/09/11 职场文书
教你用Java在个人电脑上实现微信扫码支付
2021/06/13 Java/Android
golang定时器
2022/04/14 Golang
Python中的 enumerate和zip详情
2022/05/30 Python