[英]How to add media_root and media_url in Django
我正在使用 Django 3,我已經嘗試了 inte.net 上可用的所有解決方案,但沒有一個對我有用。 當我設置 DEBUG=False 時,我無法在 HTML 頁面上顯示圖像。 這是我的設置
-root_app
--main_app
---settings.py
---asgi.py
---urls.py
---wsgi.py
--sub_app
---admin.py
---urls.py
---views.py
---static
----style.css
---templates
----home.html
---media
----images
settings.py 中的媒體路徑
MEDIA_ROOT = os.path.join(BASE_DIR,'sub_app','media')
MEDIA_URL = '/media/'
在這里我做了什么來解決它
django.template.context_processors.media'
urls.py
的 url_patterns 中添加+static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
STATICFILES_STORAGE = 'whitenoise.storage.CompressedStaticFilesStorage'
,否則我會收到 500 錯誤。 檢查此評論但是,我仍然無法在home.html
頁面顯示圖像。 當我使用檢查元素單擊圖像源時,我得到了這個/media/images/img.png
這些設置解決了媒體路徑問題
MEDIA_ROOT = os.path.join(BASE_DIR, 'sub_app','media')
MEDIA_URL = '/media/'
Static 路徑
STATIC_ROOT = os.path.join(BASE_DIR, 'sub_app','static')
STATIC_URL = '/static/
在 main_app 的 urls.py 中添加 re_path 行
from django.conf.urls.static import static
from django.views.static import serve
urlpatterns = [
path('admin/', admin.site.urls),
path('',include('sub_app.urls')),
re_path(r'^media/(?P<path>.*)$', serve, kwargs={'document_root': settings.MEDIA_ROOT})
]
改變這個
MEDIA_ROOT = os.path.join(BASE_DIR,'sub_app','media')
到
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
在settings.py 中使用
{{MEDIA_URL}}images/image.png
在你的模板中。
對 Abhishek 博士的回答的編輯:是的,您需要MEDIA_ROOT
設置,但您還需要將其 append 放入STATICFILES_DIRS
列表中,它看起來像這樣:
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
STATICFILES_DIRS = [
# ...
os.path.join(BASE_DIR, 'media'),
]
加載圖像時,使用如下軟編碼路徑:
{% load static %}
<!-- remember to change the file name/type! -->
<img src="{% static 'images/image.jpg' %}" alt="Image">
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.