1.flask特有的變數和函數: 變數:g、session、request、config 函數:url_for()、get_flashed_messages()這個函數註意了啊,記住這是個函數,別忘了寫括弧!!!!!!!!! 廢話不多說,直接上代碼體驗一下: 先解釋一個bug,當我們設置了# -*- ...
1.flask特有的變數和函數:
變數:g、session、request、config
函數:url_for()、get_flashed_messages()這個函數註意了啊,記住這是個函數,別忘了寫括弧!!!!!!!!!
廢話不多說,直接上代碼體驗一下:
先解釋一個bug,當我們設置了# -*- coding:utf-8 -*-,但是當返回瀏覽器頁面的數據是漢字的時候還會出現字元編碼問題,如下:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 0: ordinal not in range(128)
此時就需要在視圖函數的那個.py文件中加入一下幾行代碼,就解決了編碼問題:
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
# -*- coding:utf-8 -*- from flask import Flask from flask import flash,render_template,session,g # 解決編碼問題 import sys reload(sys) sys.setdefaultencoding("utf-8") app = Flask(__name__) app.secret_key = 'hello' @app.route('/',methods=["GET","POST"]) def hello_world(): # flash底層是將閃現信息放在了session中,所以需要設置secret_key flash("python") return g.age @app.route('/set_session', methods=['GET', 'POST']) def set_session(): session["name"] = "wangwu" g.age = 18 return render_template('six_variable.html') if __name__ == '__main__': app.run(debug=True)
這是前段代碼:
1.flash: {% for message in get_flashed_messages() %} {{ message }} {% endfor %} <br> 2.request:<br> {{ request.url }} <br> 比如:得到的該路徑為:http://localhost:5000/get_session {{ request.url_root }} <br> 結果為:http://localhost:5000/
{{ request.url_rule }} <br> 結果為:/get_session {{ request.url_charset }} <br>結果為:utf-8 3.config:<br> {{ config.root_path }} <br> 獲取項目跟路徑 {{ config.DEBUG }} <br> 獲取DEBUG模式的值 在前段頁面字典取值得兩種方法 {{ config["SECRET_KEY"] }}<br> 4.session:<br> {{ session.name }} <br> {{ session["name"] }} <br> 5.url_for:<br> {{ url_for("set_session") }}<br> <a href="{{ url_for("hello_world") }}">hello_world</a><br> 6.g:<br> {{ g.age }}