flask 雜記

參考資料:http://python.jobbole.com/84003/  https://flask-cn.readthedocs.io/en/latest/tutorial/html

加載配置:python

app = Flask(__name__)
app.config.from_object(__name__)

from_object() 會識別給出的對象(若是是一個字符串,它 會自動導入這個模塊),而後查找全部已定義的大寫變量。在咱們這個例子裏,配置 在幾行代碼前。你也能夠把它移動到一個單獨的文件中。數據庫

app.config.from_envvar('FLASKR_SETTINGS', silent=True)

silent參數是爲了告訴Flask不要報錯,即便沒有設置 環境變量flask

 ===================api

從 _future_ 中的import內容要在因此import的最前面服務器

from __future__ import with_statement
from contextlib import closing

===================多線程

from flask import g

@app.before_request def before_request(): g.db
= connect_db() @app.after_request def after_request(response): g.db.close() return response

用 before_request() 裝飾的函數在每次請求以前 被調用,它沒有參數。用 after_request() 裝飾的函數是在每 次請求結束後被調用,並且它須要傳入response。這類函數必須返回同一個response 對象或者一個不一樣的response對象app

咱們把當前的數據庫鏈接保存在一個特殊的對象 g 裏面,這個對象 flask已經爲咱們提供了。這個對象只能用來爲一個請求保存信息,每個函數均可以 訪問這個對象。不要用其餘的對象來保存信息,由於在多線程的環境下會沒法工做。 g 對象是一個特殊的對象,它會在後臺作一些魔術來確保它可以跟我 們預想的同樣執行函數

===========================url

 咱們的模版將使用 Jinja2 的格式,並且默 認是打開自動轉義的。這也就是說,除非咱們在代碼中用 Markup 標記一個值,或者在模版中用 |safe 過濾器,不然Jinja2會將一些特殊字符, 如 < 或 > 用XML格式來轉義

========================報錯郵件

ADMINS = ['yourname@example.com']
if not app.debug:
    import logging
    from logging.handlers import SMTPHandler
    mail_handler = SMTPHandler('127.0.0.1',
                               'server-error@example.com',
                               ADMINS, 'YourApplication Failed')
    mail_handler.setLevel(logging.ERROR)
    app.logger.addHandler(mail_handler)

咱們建立了一個新的類 SMTPHandler ,他 將經過 127.0.0.1 的郵件服務器向全部的 ADMINS 用戶發送標題爲「YourApplication Failed」 郵件,而且將發件地址配置爲 server-error@example.com 。此外,咱們還提供了對 須要證書的郵件服務器的支持

==================配置

在Flask中,有一個現成的保存、載入的對象,就是 Flask 類中的 config 對象。在這個對象中Flask不只存放本身的配置,還存放拓展插件的配置,並且也存放你對於本身應用的本身的配置。

=================

怎麼拿到應用程序的當前配置呢?使用 current_app:

from flask import current_app, Blueprint, render_template
admin = Blueprint('admin', __name__, url_prefix='/admin')

@admin.route('/')
def index():
    return render_template(current_app.config['INDEX_TEMPLATE'])

 =================日誌

import logging
from logging.handlers import SysLogHandler
syslog_handler = SysLogHandler()
syslog_handler.setLevel(logging.WARNING)
app.logger.addHandler(syslog_handler)
相關文章
相關標籤/搜索