真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么解決Django生產(chǎn)環(huán)境無法加載靜態(tài)文件問題的解決-創(chuàng)新互聯(lián)

這篇文章主要介紹怎么解決Django生產(chǎn)環(huán)境無法加載靜態(tài)文件問題的解決,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)是專業(yè)的臨沂網(wǎng)站建設(shè)公司,臨沂接單;提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行臨沂網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

起步

線上部署時(shí)因設(shè)置了 settings.DEBUG = False 會(huì)導(dǎo)致靜態(tài)文件都是 404 的情況。主要原因是應(yīng)為關(guān)閉DEBUG模式后,Django 便不提供靜態(tài)文件服務(wù)了。

runserver 的啟動(dòng)

如果運(yùn)行是通過 runserver 命令的方式,那簡(jiǎn)單,在啟動(dòng) runserver 指令后追加 --insecure 選項(xiàng)能參數(shù)強(qiáng)制 django 處理靜態(tài)文件。

其他方式啟動(dòng)

但如果是通過 uwsgi 或 daphne 等啟動(dòng)的話,追加選項(xiàng)的方式就不管用了。要解決這個(gè)問題,我們要手動(dòng)去使用靜態(tài)文件服務(wù),這種處理方式是比較推薦的,因?yàn)樗瑫r(shí)也支持了 runserver 的方式。

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

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.*)$', return_static, name='static'), # 添加這行
]

這樣就行了。

為什么這樣就能解決了?

需要去做靜態(tài)文件的路由匹配,但重點(diǎn)是這里多了個(gè)函數(shù) return_static 去代理了 serve ,如果你稍微看下 serve 函數(shù)的代碼就立馬理解了:

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

默認(rèn)情況下 insecure=False ,并且在關(guān)閉調(diào)試模式后都是 404。通過寫個(gè) return_static 函數(shù)其實(shí)與 --insecure 的選項(xiàng)是異曲同工的。

媒體文件的處理

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

上面的方法會(huì)搜索多個(gè)目錄的,盡管開發(fā)人員會(huì)將靜態(tài)文件同一放目錄下。但 Django 的 admin 模塊的靜態(tài)文件存放在其他地方的。

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

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

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

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

以上是“怎么解決Django生產(chǎn)環(huán)境無法加載靜態(tài)文件問題的解決”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)頁名稱:怎么解決Django生產(chǎn)環(huán)境無法加載靜態(tài)文件問題的解決-創(chuàng)新互聯(lián)
本文URL:http://weahome.cn/article/doohjd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部