最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決Django生產(chǎn)環(huán)境無法加載靜態(tài)文件問題的解決

 更新時(shí)間:2019年04月23日 09:22:26   作者:棲遲於一丘  
這篇文章主要介紹了解決Django生產(chǎn)環(huán)境無法加載靜態(tài)文件問題的解決,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

起步

線上部署時(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<path>.*)$', 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<path>.*)$' , 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)文件,我們希望我們的程序是精益求精的良品。

總結(jié)

另外還有通過第三方程序來處理靜態(tài)文件,比如 nginx 設(shè)置 alias 等。但顯然我更希望是程序自身的處理方式。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用python爬蟲實(shí)現(xiàn)抓取動(dòng)態(tài)加載數(shù)據(jù)

    使用python爬蟲實(shí)現(xiàn)抓取動(dòng)態(tài)加載數(shù)據(jù)

    這篇文章主要給大家介紹了如何用python爬蟲抓取豆瓣電影“分類排行榜”中的電影數(shù)據(jù),比如輸入“犯罪”則會(huì)輸出所有犯罪影片的電影名稱、評(píng)分,文中通過代碼示例和圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • Python如何使用正則表達(dá)式分割字符串舉4例說明

    Python如何使用正則表達(dá)式分割字符串舉4例說明

    在Python編程中我們經(jīng)常需要對(duì)字符串進(jìn)行分割操作,下面這篇文章主要給大家介紹了關(guān)于Python如何使用正則表達(dá)式分割字符串的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • Python3.4實(shí)現(xiàn)遠(yuǎn)程控制電腦開關(guān)機(jī)

    Python3.4實(shí)現(xiàn)遠(yuǎn)程控制電腦開關(guān)機(jī)

    這篇文章主要為大家詳細(xì)介紹了Python3.4實(shí)現(xiàn)遠(yuǎn)程控制電腦開關(guān)機(jī)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • python2爬取百度貼吧指定關(guān)鍵字和圖片代碼實(shí)例

    python2爬取百度貼吧指定關(guān)鍵字和圖片代碼實(shí)例

    這篇文章主要介紹了python2爬取百度貼吧指定關(guān)鍵字和圖片代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Django模板語言 Tags使用詳解

    Django模板語言 Tags使用詳解

    這篇文章主要介紹了Django模板語言 Tags使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 詳解如何使用Pytorch進(jìn)行多卡訓(xùn)練

    詳解如何使用Pytorch進(jìn)行多卡訓(xùn)練

    當(dāng)一塊GPU不夠用時(shí),我們就需要使用多卡進(jìn)行并行訓(xùn)練。其中多卡并行可分為數(shù)據(jù)并行和模型并行。本文就來教教大家如何使用Pytorch進(jìn)行多卡訓(xùn)練?,需要的可參考一下
    2022-10-10
  • Python跨文件實(shí)現(xiàn)字符串填充的三種實(shí)現(xiàn)方法

    Python跨文件實(shí)現(xiàn)字符串填充的三種實(shí)現(xiàn)方法

    本文主要介紹了Python跨文件實(shí)現(xiàn)字符串填充的三種實(shí)現(xiàn)方法,包括format方法、%格式化操作符和eval函數(shù)結(jié)合f-string,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-12-12
  • tensorflow 中對(duì)數(shù)組元素的操作方法

    tensorflow 中對(duì)數(shù)組元素的操作方法

    今天小編就為大家分享一篇tensorflow 中對(duì)數(shù)組元素的操作方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • 在python項(xiàng)目的docker鏡像里如何使用pdm管理依賴

    在python項(xiàng)目的docker鏡像里如何使用pdm管理依賴

    在 DjangoStarter 項(xiàng)目中,我已經(jīng)使用 pdm 作為默認(rèn)的包管理器,不再直接使用 pip,所以部署的時(shí)候 dockerfile 和 docker-compose 配置需要修改一下,這篇文章主要介紹了在python項(xiàng)目的docker鏡像里使用pdm管理依賴,需要的朋友可以參考下
    2024-08-08
  • Flask-SQLALchemy基本使用方法

    Flask-SQLALchemy基本使用方法

    本文主要介紹了Flask-SQLALchemy基本使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06

最新評(píng)論

宁南县| 彭山县| 淮安市| 西城区| 普兰县| 张北县| 瑞昌市| 庆阳市| 汉源县| 屏东市| 确山县| 温宿县| 密山市| 原平市| 汉川市| 盐津县| 兴隆县| 宁国市| 湖州市| 桂林市| 平安县| 滦南县| 罗田县| 盱眙县| 昌乐县| 即墨市| 宜兰县| 阜康市| 乌审旗| 马鞍山市| 汉源县| 淳化县| 林周县| 宁安市| 太原市| 库尔勒市| 彰化市| 高雄县| 三原县| 河北省| 双鸭山市|