91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么解決Django生產環境無法加載靜態文件問題的解決

發布時間:2021-05-08 09:47:08 來源:億速云 閱讀:309 作者:小新 欄目:開發技術

這篇文章主要介紹怎么解決Django生產環境無法加載靜態文件問題的解決,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

起步

線上部署時因設置了 settings.DEBUG = False 會導致靜態文件都是 404 的情況。主要原因是應為關閉DEBUG模式后,Django 便不提供靜態文件服務了。

runserver 的啟動

如果運行是通過 runserver 命令的方式,那簡單,在啟動 runserver 指令后追加 --insecure 選項能參數強制 django 處理靜態文件。

其他方式啟動

但如果是通過 uwsgi 或 daphne 等啟動的話,追加選項的方式就不管用了。要解決這個問題,我們要手動去使用靜態文件服務,這種處理方式是比較推薦的,因為它同時也支持了 runserver 的方式。

解決的方式如下,在 urls.py 中添加 url 規則:

from django.contrib.staticfiles.views import serve
from django.urls import re_path

def return_static(request, path, insecure=True, **kwargs):
  return serve(request, path, insecure, **kwargs)

urlpatterns = [
  ...
  re_path(r'^static/(?P<path>.*)$', return_static, name='static'), # 添加這行
]

這樣就行了。

為什么這樣就能解決了?

需要去做靜態文件的路由匹配,但重點是這里多了個函數 return_static 去代理了 serve ,如果你稍微看下 serve 函數的代碼就立馬理解了:

def serve(request, path, insecure=False, **kwargs):
  if not settings.DEBUG and not insecure:
    raise Http404

默認情況下 insecure=False ,并且在關閉調試模式后都是 404。通過寫個 return_static 函數其實與 --insecure 的選項是異曲同工的。

媒體文件的處理

媒體文件的處理當然可以將上面 url 規則變動下就能加載了。如果用上面的方法來處理媒體文件可以得 90 分,那么下面的方法可以得 95 分。

上面的方法會搜索多個目錄的,盡管開發人員會將靜態文件同一放目錄下。但 Django 的 admin 模塊的靜態文件存放在其他地方的。

而媒體文件,我們只會限定在一個目錄的,所以更好的處理方法是只在一個目錄下搜索:

from django.views.static import serve as static_serve  # 注意這里引入的與上面的不同
from django.urls import re_path

urlpatterns = [
  ...
  re_path(r'^media/(?P<path>.*)$' , static_serve, { 'document_root' : settings.MEDIA_ROOT}),
]

另外,如果網站的所有靜態文件都只會在一個目錄下(使用 collectstatic 能將所有靜態文件都復制到一個目錄),那么也請用這個 static_serve 方式去處理靜態文件,我們希望我們的程序是精益求精的良品。

以上是“怎么解決Django生產環境無法加載靜態文件問題的解決”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

开远市| 邯郸县| 平泉县| 九江市| 莲花县| 锦屏县| 广宁县| 明星| 德格县| 磴口县| 醴陵市| 那曲县| 柳河县| 焦作市| 汕尾市| 嘉义市| 互助| 宾川县| 谢通门县| 太白县| 洛宁县| 东台市| 泰兴市| 玛沁县| 松阳县| 琼中| 黑水县| 铅山县| 胶州市| 斗六市| 广东省| 开原市| 察雅县| 翼城县| 华容县| 台北县| 开封县| 井研县| 平谷区| 舞钢市| 西畴县|