Flask框架中特有的變量/函數及上下文

模板中特有的變量和函數

你能夠在本身的模板中訪問一些 Flask 默認內置的函數和對象python

config

你能夠從模板中直接訪問Flask當前的config對象:sql

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

request

就是flask中表明當前請求的request對象:數據庫

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

session

爲Flask的session對象flask

{{session.new}} True 

g變量

在視圖函數中設置g變量的 name 屬性的值,而後在模板中直接能夠取出安全

{{ g.name }}

url_for()

url_for會根據傳入的路由器函數名,返回該路由對應的URL,在模板中始終使用url_for()就能夠安全的修改路由綁定的URL,則不比擔憂模板中渲染出錯的連接:cookie

{{url_for('home')}} / 

若是咱們定義的路由URL是帶有參數的,則能夠把它們做爲關鍵字參數傳入url_for(),Flask會把他們填充進最終生成的URL中:session

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

這個函數會返回以前在flask中經過flask()傳入的消息的列表,flash函數的做用很簡單,能夠把由Python字符串表示的消息加入一個消息隊列中,再使用get_flashed_message()函數取出它們並消費掉:app

{%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.name current_app.test_value='value' 

g變量

g 做爲 flask 程序全局的一個臨時變量,充當者中間媒介的做用,咱們能夠經過它傳遞一些數據,g 保存的是當前請求的全局變量,不一樣的請求會有不一樣的全局變量,經過不一樣的thread id區別

g.name='abc'
相關文章
相關標籤/搜索