溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • 怎么解決Django關閉Debug模式無法加載media圖片與static靜態文件的問題

怎么解決Django關閉Debug模式無法加載media圖片與static靜態文件的問題

發布時間:2021-03-10 17:02:17 來源:億速云 閱讀:297 作者:TREX 欄目:開發技術

這篇文章主要介紹“怎么解決Django關閉Debug模式無法加載media圖片與static靜態文件的問題”,在日常操作中,相信很多人在怎么解決Django關閉Debug模式無法加載media圖片與static靜態文件的問題問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么解決Django關閉Debug模式無法加載media圖片與static靜態文件的問題”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

開發時,通常打開Debug模式會快速定位開發時的一些問題。

項目開始部署時,關閉Debug模式,url.py路由靜態文件和圖片寫法:

# url.py
from django.views import static
from django.conf import settings
#路由靜態文件和圖片
urlpatterns = [
 url(r'^static/(?P<path>.*)$', static.serve, {'document_root': settings.STATIC_ROOT}, name='media')
 url(r'^media/(?P<path>.*)$', static.serve, {'document_root': settings.MEDIA_ROOT}, name='media')
]

補充知識:Django靜態文件的獲取,以及對static和media目錄設置的一些思考

Django直接獲取靜態資源文件是不行的,會報錯。

添加靜態資源文件夾static,設置靜態文件根目錄后

INSTALLED_APPS = [
 ...
 'django.contrib.staticfiles',
 ...
]

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.0/howto/static-files/

STATIC_URL = '/static/'
# 可收集靜態文件到static文件夾,便于訪問
STATICFILES_DIRS = [
 os.path.join(BASE_DIR, 'static')
]

配置完成后就可以通過下面的代碼調用靜態資源了。圖片、css、js文件。

{% load static %}

...
...
<img class="author_img rounded-circle" src="{% static 'image/blog/author.png' %}" alt="" >

但是上傳到media中的文件可以不通過這種方式調用。但是前提是也要配置media的文件根路徑和根目錄。

MEDIA_URL = '/media/' # 訪問文件的url根路徑
MEDIA_ROOT = os.path.join(BASE_DIR, 'media') # 上傳文件存儲根目錄

然后可以通過如下方法調用。

<img class="img-fluid" src="/media/{{ detop_view.cover_photo }} " alt="post">

可以注意到這里資源引用沒有用{% static ... %},實際上只要這樣子在settings.py文件中配置了相關路徑和目錄,就可以通過這種方式引用。

要是別的靜態文件都通過這種方法引用,對于小項目這不是什么問題,你可以將靜態文件放在任何你的web服務器能夠找到的地方。但是對于大型項目,尤其是那些包含多個app在內的項目,處理那些由app帶來的多套不同的靜態文件是個麻煩活。但這正是django.contrib.staticfiles的用途:它收集每個應用(和任何你指定的地方)的靜態文件到一個統一指定的地方,并且易于訪問。

media目錄下一般放上傳的文件,在django項目部署到服務器的時候,會輸入python manage.py collectstatic收集靜態資源文件,所以與static目錄不沖突,而且media中的文件可能還會被刪除。因此后期用戶上傳的文件不放在static目錄下。

到此,關于“怎么解決Django關閉Debug模式無法加載media圖片與static靜態文件的問題”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

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

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女