<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ### 導航 - [索引](# "總目錄") - [下一頁](# "在 Flask 中使用 MongoKit") | - [上一頁](# "自定義錯誤頁面") | - [Flask 0.10.1 文檔](#) ? - [Flask 代碼模式](#) ? # 延遲加載視圖 Flask 通常配合裝飾器使用,裝飾器使用非常簡單,而且使您可以將 URL 和處理它的函數放在一起。然而這種方法也有一種不足: 這就意味著您使用裝飾器的代碼必須在前面導入,否則 Flask 將無法找到您的函數。 這對于需要很快導入的應用程序來說是一個問題,這種情況可能出現在類似谷歌的App Engine 這樣的系統上。所以如果您突然發現您的引用超出了這種方法可以處理的能力,您可以降級到中央 URL 映射的方法。 用于激活中央 URL 映射的函數是 [add_url_rule()](# "flask.Flask.add_url_rule") 方法。您需要提供一個設置應用程序所有 URL 的文件,而不是使用裝飾器。 ### 轉換到中央 URL 映射 假象現在的應用的樣子如下所示: ~~~ from flask import Flask app = Flask(__name__) @app.route('/') def index(): pass @app.route('/user/<username>') def user(username): pass ~~~ 而中央 URL 映射的方法下,您需要一個不包含任何裝飾器的文件(views.py),如下所示: ~~~ def index(): pass def user(username): pass ~~~ 然后使用一個文件初始化應用并將函數映射到 URLs: ~~~ from flask import Flask from yourapplication import views app = Flask(__name__) app.add_url_rule('/', view_func=views.index) app.add_url_rule('/user/<username>', view_func=views.user) ~~~ ### 延遲加載 目前我們僅僅將視圖和路徑配置分開了,但是模塊仍然是在前面導入的。下面的技巧使得視圖函數可以按需加載。可以使用一個輔助類來實現,這個輔助類以函數的方式作用,但是當第一次使用某個函數時,它才在內部導入這個函數: ~~~ from werkzeug import import_string, cached_property class LazyView(object): def __init__(self, import_name): self.__module__, self.__name__ = import_name.rsplit('.', 1) self.import_name = import_name @cached_property def view(self): return import_string(self.import_name) def __call__(self, *args, **kwargs): return self.view(*args, **kwargs) ~~~ 在使用這種方法時,將 __module__ 和 __name__ 變量設定為合適的值是很重要的。在你沒有手動指定一個 URL 規則時,這兩個變量被 Flask 用于在內部確定如何命名URL 規則。 現在您就可以定義您將視圖整合到的位置,如下所示: ~~~ from flask import Flask from yourapplication.helpers import LazyView app = Flask(__name__) app.add_url_rule('/', view_func=LazyView('yourapplication.views.index')) app.add_url_rule('/user/<username>', view_func=LazyView('yourapplication.views.user')) ~~~ 您可以進一步改進它,以便于節省鍵盤敲擊次數。通過編寫一個在內部調用[add_url_rule()](# "flask.Flask.add_url_rule") 方法的函數,自動將一個包含項目名稱以及點符號的字符串添加為前綴,并按需將 view_func 封裝進 LazyView ~~~ def url(url_rule, import_name, **options): view = LazyView('yourapplication.' + import_name) app.add_url_rule(url_rule, view_func=view, **options) url('/', 'views.index') url('/user/<username>', 'views.user') ~~~ 需要記住的是,請求前后激發的回調處理器必須在一個文件里,并在前面導入,使之在第一個請求到來之間能夠合適地工作。對于其他所有的裝飾器來說也是一樣的。 ? 版權所有 2013, Armin Ronacher.
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看