[英]Django - Image Uploads save to correct location, but cannot be displayed
我一直在用Django开发自己的网站,遇到了一个问题,
我有一个模型:
class Text_Image_Page(TrainingModulePage):
page_num = models.IntegerField(default = 0)
title = models.CharField(max_length=200)
text = models.CharField(max_length=200)
image_desc = models.CharField(max_length=200)
image = models.ImageField(upload_to=settings.MEDIA_ROOT, default = 'null')
training_module = models.ForeignKey(TrainingModule, related_name='text_image_pages', null=True)
def __str__(self):
return "Image Page"
我正在使用modelForm创建此模型,并且一切正常,直到尝试在模板中显示该模型。
我的settings.py中的“我的媒体根目录”为
STATIC_URL = '/static/'
MEDIA_URL = '/superchem_media/'
STATIC_ROOT = '/home/anthonycalab/webapps/superchem_static/'
MEDIA_ROOT = '/home/anthonycalab/webapps/superchem_media/'
图像已正确上传到媒体根目录,因为我可以通过filezilla看到它们存在,但是当我在模板中显示图像时:
<img src={{t.image.url}} alt="{{t.image_desc}}" style="width:304px;height:228px;">
它不显示图像,此外,如果我加载图像直接链接,则会显示404错误并显示以下消息:
Request Method: GET
Request URL: http://anthonycalab.webfactional.com/home/anthonycalab/webapps/superchem_media/41WKTB25KsL._SY395__mNsiAbb.jpg
Using the URLconf defined in superchem.urls, Django tried these URL patterns, in this order:
^training_modules/
^admin/
^accounts/
^superchem\_media\/(?P<path>.*)$
^static\/(?P<path>.*)$
The current URL, home/anthonycalab/webapps/superchem_media/41WKTB25KsL._SY395__mNsiAbb.jpg, didn't match any of these.
任何想法是我可能做错了什么?
编辑:
该问题已缩小为:
{{t.image.url}} = /home/anthonycalab/webapps/superchem_media/41WKTB25KsL._SY395__mNsiAbb.jpg
当我想要
/media/[imagelink].jpg
在主urls.py文件中添加媒体url
from django.contrib import admin
from django.conf.urls import patterns, include, url
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.conf import settings
admin.autodiscover()
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include('home.urls')),
]
urlpatterns += patterns('',
url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT, 'show_indexes': False}),
url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes': False}),
)
urlpatterns += staticfiles_urlpatterns()
settings.py
import os
def root(x):
return os.path.join(os.path.abspath(os.path.dirname(__file__)), '..',x)
MEDIA_ROOT = root('media')
MEDIA_URL = '/media/'
STATIC_ROOT = root('staticstorage')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
root('static'),
)
TEMPLATE_CONTEXT_PROCESSORS = (
'-------------------'
'django.core.context_processors.media',
'django.core.context_processors.static',
'-----------'
)
urls.py
from django.conf.urls import patterns, include, url
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.conf import settings
urlpatterns += patterns('',
url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT, 'show_indexes': False}),
url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes': False}),
)
urlpatterns += staticfiles_urlpatterns()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.