快速解決Django關(guān)閉Debug模式無法加載media圖片與static靜態(tài)文件
開發(fā)時(shí),通常打開Debug模式會(huì)快速定位開發(fā)時(shí)的一些問題。
項(xiàng)目開始部署時(shí),關(guān)閉Debug模式,url.py路由靜態(tài)文件和圖片寫法:
# url.pyfrom django.views import staticfrom django.conf import settings#路由靜態(tài)文件和圖片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’)]
補(bǔ)充知識(shí):Django靜態(tài)文件的獲取,以及對(duì)static和media目錄設(shè)置的一些思考
Django直接獲取靜態(tài)資源文件是不行的,會(huì)報(bào)錯(cuò)。
添加靜態(tài)資源文件夾static,設(shè)置靜態(tài)文件根目錄后
INSTALLED_APPS = [ ... ’django.contrib.staticfiles’, ...]# Static files (CSS, JavaScript, Images)# https://docs.djangoproject.com/en/3.0/howto/static-files/STATIC_URL = ’/static/’# 可收集靜態(tài)文件到static文件夾,便于訪問STATICFILES_DIRS = [ os.path.join(BASE_DIR, ’static’)]
配置完成后就可以通過下面的代碼調(diào)用靜態(tài)資源了。圖片、css、js文件。
{% load static %}......<img src='http://www.gepszalag.com/bcjs/{% static ’image/blog/author.png’ %}' alt='' >
但是上傳到media中的文件可以不通過這種方式調(diào)用。但是前提是也要配置media的文件根路徑和根目錄。
MEDIA_URL = ’/media/’ # 訪問文件的url根路徑MEDIA_ROOT = os.path.join(BASE_DIR, ’media’) # 上傳文件存儲(chǔ)根目錄
然后可以通過如下方法調(diào)用。
<img src='https://rkxy.com.cn/media/{{ detop_view.cover_photo }} ' alt='post'>
可以注意到這里資源引用沒有用{% static ... %},實(shí)際上只要這樣子在settings.py文件中配置了相關(guān)路徑和目錄,就可以通過這種方式引用。
要是別的靜態(tài)文件都通過這種方法引用,對(duì)于小項(xiàng)目這不是什么問題,你可以將靜態(tài)文件放在任何你的web服務(wù)器能夠找到的地方。但是對(duì)于大型項(xiàng)目,尤其是那些包含多個(gè)app在內(nèi)的項(xiàng)目,處理那些由app帶來的多套不同的靜態(tài)文件是個(gè)麻煩活。但這正是django.contrib.staticfiles的用途:它收集每個(gè)應(yīng)用(和任何你指定的地方)的靜態(tài)文件到一個(gè)統(tǒng)一指定的地方,并且易于訪問。
media目錄下一般放上傳的文件,在django項(xiàng)目部署到服務(wù)器的時(shí)候,會(huì)輸入python manage.py collectstatic收集靜態(tài)資源文件,所以與static目錄不沖突,而且media中的文件可能還會(huì)被刪除。因此后期用戶上傳的文件不放在static目錄下。
以上這篇快速解決Django關(guān)閉Debug模式無法加載media圖片與static靜態(tài)文件就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. XML入門精解之結(jié)構(gòu)與語法2. ASP刪除img標(biāo)簽的style屬性只保留src的正則函數(shù)3. Echarts自定義圖形的方法參考4. ASP動(dòng)態(tài)網(wǎng)頁制作技術(shù)經(jīng)驗(yàn)分享5. Xml簡介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理6. ASP基礎(chǔ)入門第二篇(ASP基礎(chǔ)知識(shí))7. CSS可以做的幾個(gè)令你嘆為觀止的實(shí)例分享8. ASP實(shí)現(xiàn)加法驗(yàn)證碼9. 解析原生JS getComputedStyle10. css代碼優(yōu)化的12個(gè)技巧
