繁体   English   中英

Django-图片上传保存到正确的位置,但无法显示

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM