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 中的列表解析和生成表达式
Mar 10 Python
python连接池实现示例程序
Nov 26 Python
用Python编写一个简单的FUSE文件系统的教程
Apr 02 Python
用Python编写一个基于终端的实现翻译的脚本
Apr 24 Python
python将pandas datarame保存为txt文件的实例
Feb 12 Python
使用Django搭建web服务器的例子(最最正确的方式)
Aug 29 Python
python 的 openpyxl模块 读取 Excel文件的方法
Sep 09 Python
python中文分词库jieba使用方法详解
Feb 11 Python
django中url映射规则和服务端响应顺序的实现
Apr 02 Python
Python如何在main中调用函数内的函数方式
Jun 01 Python
如何理解python面向对象编程
Jun 01 Python
浅谈matplotlib默认字体设置探索
Feb 03 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/15 PHP
Yii统计不同类型邮箱数量的方法
2016/10/18 PHP
php实现连接access数据库并转txt写入的方法
2017/02/08 PHP
ThinkPHP实现简单登陆功能
2017/04/28 PHP
不懂JavaScript应该怎样学
2008/04/16 Javascript
jquery入门必备的基本认识及实例(整理)
2013/06/24 Javascript
Js冒泡事件详解及阻止示例
2014/03/21 Javascript
jquery判断浏览器后退时候弹出消息的方法
2014/08/11 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
2015/02/04 Javascript
谈谈JavaScript中function多重理解
2015/08/28 Javascript
Bootstrap实现默认导航栏效果
2020/09/21 Javascript
让你一句话理解闭包(简单易懂)
2016/06/03 Javascript
探讨跨域请求资源的几种方式(总结)
2016/12/02 Javascript
flag和jq on 的绑定多个对象和方法(必看)
2017/02/27 Javascript
vue实现学生录入系统之添加删除功能
2018/07/11 Javascript
vue+element的表格实现批量删除功能示例代码
2018/08/17 Javascript
python通过get,post方式发送http请求和接收http响应的方法
2015/05/26 Python
python实现文件快照加密保护的方法
2015/06/30 Python
理解Python中的With语句
2016/03/18 Python
Python编程实现生成特定范围内不重复多个随机数的2种方法
2017/04/14 Python
Python模拟登陆实现代码
2017/06/14 Python
Python3正则匹配re.split,re.finditer及re.findall函数用法详解
2018/06/11 Python
python-numpy-指数分布实例详解
2019/12/07 Python
浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
2020/06/23 Python
基础的CSS3弹性盒Flexbox布局使用实例
2016/04/08 HTML / CSS
Html5+JS实现手机摇一摇功能
2015/04/24 HTML / CSS
美国隐形眼镜零售商:LensPure
2019/03/10 全球购物
浙大网新C/C++面试解惑
2015/05/27 面试题
EJB的基本架构
2016/09/22 面试题
外企财务年会演讲稿
2014/01/03 职场文书
大三预备党员入党思想汇报
2014/01/08 职场文书
高一新生军训感言
2014/03/02 职场文书
施工员岗位职责
2014/03/16 职场文书
2014年工程工作总结
2014/11/25 职场文书
教师文明餐桌光盘行动倡议书
2015/04/28 职场文书
Windows和Linux上部署Golang并运行程序
2022/04/22 Servers