【发布时间】:2016-01-10 08:31:52
【问题描述】:
我有一个Django 项目,我想在其中访问一些图像。
我已经在mySite\settings.py 中设置了路径
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
我的网址是这样定义的:
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),
]
if settings.DEBUG:
# static files (images, css, javascript, etc.)
urlpatterns += patterns('',
url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings.MEDIA_ROOT,
}),
)
所以图像位于mySite/media/subfolder。现在我想在我的页面上显示我的图片,我的<img>-tag 的src 是这样的
/media/subfolder/foobar.png
所以完整路径是http://localhost:8000//media/subfolder/foobar.png(在网络控制台中检查)。但是,没有图片显示。我还尝试了其他不同的绝对路径,例如 http://localhost:8000/subfolder/foobar.png 或 http://localhost:8000/foobar.png,但没有显示任何图像。
我读过Django MEDIA_URL and MEDIA_ROOT 和django media not loading,但没有帮助。
我错过了什么?
【问题讨论】:
-
DEBUG = True 在设置中,对吧?
-
MEDIA_ROOT是否具有您认为的价值?你在__file__上调用dirname两次,所以如果__file__是…/mySite/settings.py,那么结果将是mySite 的父级。附加 media 不会给你 mySite/media。 -
@ZackTanner 是的,
DEBUG设置为True -
@RobKennedy 我刚刚打印出了路径,我认为它显示了正确的路径:
BASE_DIR: /Projects/mySite、MEDIA_ROOT: /Projects/mySite/media、MEDIA_URL: /media/和__file__: /Projects/mySite/mySite/settings.py。 -
我明白了。您有两个级别的项目目录。我没想到会这样,但 c'est la vie。
标签: python django django-views django-urls django-settings