<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 內建的視圖 # 有幾個Django 的內建視圖在編寫視圖 中講述,文檔的其它地方也會有所講述。 ## 開發環境中的文件服務器 ## **static.serve(request, path, document_root, show_indexes=False)** 在本地的開發環境中,除了你的項目中的靜態文件,可能還有一些文件,出于方便,你希望讓Django 來作為服務器。serve() 視圖可以用來作為任意目錄的服務器。(該視圖不能用于生產環境,應該只用于開發時輔助使用;在生產環境中你應該使用一個真實的前端Web 服務器來服務這些文件)。 最常見的例子是用戶上傳文檔到`MEDIA_ROOT` 中。`django.contrib.staticfiles` 用于靜態文件且沒有對用戶上傳的文件做處理,但是你可以通過在URLconf 中添加一些內容來讓Django 作為MEDIA_ROOT 的服務器: ``` from django.conf import settings from django.views.static import serve # ... the rest of your URLconf goes here ... if settings.DEBUG: urlpatterns += [ url(r'^media/(?P<path>.*)$', serve, { 'document_root': settings.MEDIA_ROOT, }), ] ``` 注意,這里的代碼片段假設你的`MEDIA_URL`的值為`'/media/'`。它將調用`serve()` 視圖,傳遞來自URLconf 的路徑和(必選的)`document_root` 參數。 因為定義這個URL 模式顯得有些笨拙,Django 提供一個小巧的URL 輔助函數`static()`,它接收`MEDIA_URL`這樣的參數作為前綴和視圖的路徑如`'django.views.static.serve'`。其它任何函數參數都將透明地傳遞給視圖。 ## 錯誤視圖 ## Django 原生自帶幾個默認視圖用于處理HTTP 錯誤。若要使用你自定義的視圖覆蓋它們,請參見自定義錯誤視圖。 ### 404 (page not found) 視圖 ### **defaults.page_not_found(request, template_name='404.html')** 當你在一個視圖中引發Http404 時,Django 將加載一個專門的視圖用于處理404 錯誤。默認為`django.views.defaults.page_not_found()` 視圖,它產生一個非常簡單的“Not Found” 消息或者渲染`404.html`模板,如果你在根模板目錄下創建了它的話。 默認的404 視圖將傳遞一個變量給模板:`request_path`,它是導致錯誤的URL。 關于404 視圖需要注意的3點: + 如果Django 在檢測URLconf 中的每個正則表達式后沒有找到匹配的內容也將調用404 視圖。 + 404 視圖會被傳遞一個`RequestContext`并且可以訪問模板上下文處理器提供的變量(例如`MEDIA_URL`)。 + 如果DEBUG 設置為`True`(在你的`settings` 模塊中),那么將永遠不會調用404 視圖,而是顯示你的URLconf 并帶有一些調試信息。 ### 500 (server error) 視圖 ### **defaults.server_error(request, template_name='500.html')** 類似地,在視圖代碼中出現運行時錯誤,Django 將執行特殊情況下的行為。如果一個視圖導致異常,Django 默認情況下將調用`django.views.defaults.server_error` 視圖,它產生一個非常簡單的“Server Error” 消息或者渲染`500.html`,如果你在你的根模板目錄下定義了它的話。 默認的500 視圖不會傳遞變量給`500.html` 模板,且使用一個空`Context` 來渲染以減少再次出現錯誤的可能性。 如果`DEBUG` 設置為`True`(在你的`settings` 模塊中),那么將永遠不會調用500 視圖,而是顯示回溯并帶有一些調試信息。 ### 403 (HTTP Forbidden) 視圖 ### **defaults.permission_denied(request, template_name='403.html')** 與404 和500 視圖一樣,Django 具有一個處理403 Forbidden 錯誤的視圖。如果一個視圖導致一個403 視圖,那么Django 將默認調用`django.views.defaults.permission_denied`視圖。 該視圖加載并渲染你的根模板目錄下的`403.html`,如果這個文件不存在則根據RFC 2616(HTTP 1.1 Specification)返回“403 Forbidden”文本。 `django.views.defaults.permission_denied` 通過`PermissionDenied` 異常觸發。若要拒絕訪問一個視圖,你可以這樣視圖代碼: ``` from django.core.exceptions import PermissionDenied def edit(request, pk): if not request.user.is_staff: raise PermissionDenied # ... ``` ### 400 (bad request) 視圖 ### **defaults.bad_request(request, template_name='400.html')** 當Django 中引發一個`SuspiciousOperation` 時,它可能通過Django 的一個組件處理(例如重設會話的數據)。如果沒有特殊處理,Django 將認為當前的請求時一個'bad request' 而不是一個server error。 `django.views.defaults.bad_request` 和server_error 視圖非常相似,除了返回400 狀態碼來表示錯誤來自客戶端的操作。 `bad_request` 視圖同樣只是在`DEBUG` 為`False` 時使用。 > 譯者:[Django 文檔協作翻譯小組](http://python.usyiyi.cn/django/index.html),原文:[Built-in Views](https://docs.djangoproject.com/en/1.8/ref/views/)。 > > 本文以 [CC BY-NC-SA 3.0](http://creativecommons.org/licenses/by-nc-sa/3.0/cn/) 協議發布,轉載請保留作者署名和文章出處。 > > [Django 文檔協作翻譯小組](http://python.usyiyi.cn/django/index.html)人手緊缺,有興趣的朋友可以加入我們,完全公益性質。交流群:467338606。
                  <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>

                              哎呀哎呀视频在线观看