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条件和循环的使用方法
Nov 01 Python
Python selenium 父子、兄弟、相邻节点定位方式详解
Sep 15 Python
详解 Python 与文件对象共事的实例
Sep 11 Python
Django项目中model的数据处理以及页面交互方法
May 30 Python
python实现下载pop3邮件保存到本地
Jun 19 Python
Python基于SMTP协议实现发送邮件功能详解
Aug 14 Python
对matplotlib改变colorbar位置和方向的方法详解
Dec 13 Python
树莓派用python中的OpenCV输出USB摄像头画面
Jun 22 Python
python实现函数极小值
Jul 10 Python
pymysql 插入数据 转义处理方式
Mar 02 Python
Python操作dict时避免出现KeyError的几种解决方法
Sep 20 Python
分享提高 Python 代码的可读性的技巧
Mar 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
仿Aspnetpager的一个PHP分页类代码 附源码下载
2012/10/08 PHP
PHP+Ajax实时自动检测是否联网的方法
2015/07/01 PHP
thinkphp3.2点击刷新生成验证码
2016/02/16 PHP
PHP使用stream_context_create()模拟POST/GET请求的方法
2016/04/02 PHP
php实现跨域提交form表单的方法【2种方法】
2016/10/17 PHP
PHP实现求两个字符串最长公共子串的方法示例
2017/11/17 PHP
如何在Laravel之外使用illuminate组件详解
2020/09/20 PHP
用js 让图片在 div或dl里 居中,底部对齐
2008/01/21 Javascript
详细讲解JS节点知识
2010/01/31 Javascript
Javascript操作URL函数修改版
2013/11/07 Javascript
详解jQuery插件开发中的extend方法
2013/11/19 Javascript
Bootstrap精简教程
2015/11/27 Javascript
jQuery实现磁力图片跟随效果完整示例
2016/09/16 Javascript
vue cli2.0单页面title修改方法
2018/06/07 Javascript
vue中的计算属性实例详解
2018/09/19 Javascript
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
2018/09/19 Javascript
微信小程序实现提交input信息到后台的方法示例
2019/01/19 Javascript
vue路由教程之静态路由
2019/09/03 Javascript
JS算法教程之字符串去重与字符串反转
2020/12/15 Javascript
python模块restful使用方法实例
2013/12/10 Python
Python对多属性的重复数据去重实例
2018/04/18 Python
Flask实现图片的上传、下载及展示示例代码
2018/08/03 Python
Python元组常见操作示例
2019/02/19 Python
python join方法使用详解
2019/07/30 Python
python 实现人和电脑猜拳的示例代码
2020/03/02 Python
Python用SSH连接到网络设备
2021/02/18 Python
Turnbull & Asser官网:英国皇室御用的顶级定制衬衫
2019/01/31 全球购物
运动会开幕式邀请函
2014/02/03 职场文书
优秀党支部书记事迹材料
2014/05/29 职场文书
群众路线教育实践活动批评与自我批评
2014/09/15 职场文书
付款委托书范本
2014/10/05 职场文书
员工离职感谢信
2015/01/22 职场文书
2015初中团委工作总结
2015/07/28 职场文书
如何使用php生成zip压缩包
2021/04/21 PHP
Python实现批量自动整理文件
2022/03/16 Python
Windows Server 修改远程桌面端口的实现
2022/06/25 Servers