博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Flask框架中特有的变量/函数及上下文
阅读量:6520 次
发布时间:2019-06-24

本文共 1748 字,大约阅读时间需要 5 分钟。

模板中特有的变量和函数

你可以在自己的模板中访问一些 Flask 默认内置的函数和对象

config

你可以从模板中直接访问Flask当前的config对象:

{
{config.SQLALCHEMY_DATABASE_URI}}sqlite:///database.db

request

就是flask中代表当前请求的request对象:

{
{request.url}}http://127.0.0.1

session

为Flask的session对象

{
{session.new}}True

g变量

在视图函数中设置g变量的 name 属性的值,然后在模板中直接可以取出

{
{ g.name }}

url_for()

url_for会根据传入的路由器函数名,返回该路由对应的URL,在模板中始终使用url_for()就可以安全的修改路由绑定的URL,则不比担心模板中渲染出错的链接:

{
{url_for('home')}}/

如果我们定义的路由URL是带有参数的,则可以把它们作为关键字参数传入url_for(),Flask会把他们填充进最终生成的URL中:

{
{ url_for('post', post_id=1)}}/post/1
get_flashed_messages()

这个函数会返回之前在flask中通过flask()传入的消息的列表,flash函数的作用很简单,可以把由Python字符串表示的消息加入一个消息队列中,再使用get_flashed_message()函数取出它们并消费掉:

{%for message in get_flashed_messages()%}    {
{message}}{%endfor%}

上下文

上下文:相当于一个容器,保存了 Flask 程序运行过程中的一些信息。

Flask中有两种上下文,请求上下文和应用上下文

请求上下文(request context)

思考:在视图函数中,如何取到当前请求的相关数据?比如:请求地址,请求方式,cookie等等

在 flask 中,可以直接在视图函数中使用 request 这个对象进行获取相关数据,而 request 就是请求上下文的对象,保存了当前本次请求的相关数据,请求上下文对象有:request、session

  • request
    • 封装了HTTP请求的内容,针对的是http请求。举例:user = request.args.get('user'),获取的是get请求的参数。
  • session
    • 用来记录请求会话中的信息,针对的是用户信息。举例:session['name'] = user.id,可以记录用户信息。还可以通过session.get('name')获取用户信息。

应用上下文(application context)

它的字面意思是 应用上下文,但它不是一直存在的,它只是request context 中的一个对 app 的代理(人),所谓local proxy。它的作用主要是帮助 request 获取当前的应用,它是伴 request 而生,随 request 而灭的。

应用上下文对象有:current_app,g

current_app

应用程序上下文,用于存储应用程序中的变量,可以通过current_app.name打印当前app的名称,也可以在current_app中存储一些变量,例如:

  • 应用的启动脚本是哪个文件,启动时指定了哪些参数
  • 加载了哪些配置文件,导入了哪些配置
  • 连了哪个数据库
  • 有哪些public的工具类、常量
  • 应用跑再哪个机器上,IP多少,内存多大
current_app.namecurrent_app.test_value='value'

g变量

g 作为 flask 程序全局的一个临时变量,充当者中间媒介的作用,我们可以通过它传递一些数据,g 保存的是当前请求的全局变量,不同的请求会有不同的全局变量,通过不同的thread id区别

g.name='abc'
 

转载于:https://www.cnblogs.com/skaarl/p/9416728.html

你可能感兴趣的文章
selenium实例:unittest框架+PO开发模式
查看>>
Nginx安装过程
查看>>
Cannot retrieve definition for form bean allDisServForm on action /allDisSer
查看>>
Log4j 1使用教程
查看>>
Java基础学习总结(21)——数组
查看>>
c语言 给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。...
查看>>
嵌入式 Linux进程间通信(五)——进程间通信简介
查看>>
Java基础学习总结(16)——Java制作证书的工具keytool用法总结
查看>>
100层跳板游戏源码项目
查看>>
php设计模式之面向对象基础知识
查看>>
ubuntu通过apt-get安装qpid
查看>>
1、DHCP配置实验
查看>>
Servlet乱码问题
查看>>
Importing Python Modules
查看>>
Mogilefs杂记(1)
查看>>
针对高分辨率屏幕的样式优化
查看>>
我的友情链接
查看>>
检测网络脚本
查看>>
网络风险评估入门之nmap常用方法
查看>>
强大的C# Expression在一个函数求导问题中的简单运用
查看>>