我有一个img文件,我将其复制到/ mediafiles /文件夹。我该如何显示它?它只返回404(未找到)。或者在DEBUG模式下这是不可能的?
我也尝试在模板中使用{{ MEDIA_URL }}img1.jpg
,但无济于事。
仅供参考,我对静态图像或样式表没有任何问题(只要我不忘记运行collectstatic)。
Django 1.8.3,Windows上的localhost,在virtualenv中。
非常感谢任何想法。
的myproject \ MYAPP \ settings.py:
STATIC_URL = '/staticfiles/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_DIRS= (
os.path.join(BASE_DIR, 'static/myapp/theme_one'),
)
TEMPLATE_DIRS = (
os.path.join(BASE_DIR, 'templates/myapp/theme_one'),
)
MEDIA_URL = '/mediafiles/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'mediafiles')
的myproject \ MYAPP \ urls.py:
from django.conf.urls import patterns, include, url
urlpatterns = patterns('',
url(r'^book/', 'book.views.protopage', name='protopage'),
)
的myproject \书\ views.py:
def protopage(request):
picurl = settings.MEDIA_URL + 'img1.jpg'
return render_to_response('book/protopage.html', locals(), context_instance=RequestContext(request))
的myproject \书\模板\书\ protopage.html:
{% load static from staticfiles %}
<!DOCTYPE html>
<html lang="en">
<head><link href="{% static 'css/style.css'%}" rel="stylesheet"></head>
<body>
<img src='{{ picurl }}'/>
</body>
</html>
文件结构
MYPROJECT
│ .gitignore
│ manage.py
├───book
│ views.py
├───myapp
│ settings.py
│ urls.py
├───mediafiles
│ img1.jpg
├───static
│ └───myapp
│ └───theme_one
│ ├───css
│ │ style.css
│ └───img
│ logo.png
├───staticfiles
├───templates
│ └───myapp
│ └───theme_one
│ └───book
│ └───protopage.html
└───venv
答案 0 :(得分:0)
我在阅读https://docs.djangoproject.com/en/1.8/ref/views/
之后开始工作了在我的urls.py文件中,我需要添加static.serve()视图:
from django.conf import settings
. . .
urlpatterns = patterns('',
url(r'^book/', 'book.views.protopage', name='protopage'),
(r'^mediafiles/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings.MEDIA_ROOT
}),
)