【问题标题】:How to show an image in template uploaded from admin panel Django 1.3如何在从管理面板 Django 1.3 上传的模板中显示图像
【发布时间】:2011-10-11 15:00:54
【问题描述】:

我是 django 的新手。我正在 django 1.3 中开发一个项目。问题是我正在从管理面板上传图片

class About(models.Model):

    image = models.ImageField(upload_to='about')
    files = models.FileField(upload_to='about')

这是我的模板标签

<img class="profile_pic" src="{{ about.image }}" />

我的设置文件如下

MEDIA_ROOT = path("media/")
MEDIA_URL = '/media/'
STATIC_ROOT = ''
STATIC_URL = '/static/'
ADMIN_MEDIA_PREFIX = '/static/admin/'
STATICFILES_DIRS = (
    path('static/'),
)

我检查了图片已上传到 /media/about/image_name。问题是它在模板中呈现为“/about/imagename”但没有显示。当我手动转到该图片网址时,它显示 404 错误。

【问题讨论】:

    标签: django django-1.3


    【解决方案1】:

    &lt;img class="profile_pic" src="{{ about.image.url }}" /&gt;

    更新

    也在你的 urls.py 中:

    if settings.DEBUG:
        urlpatterns += patterns('',
            (r'^' + settings.MEDIA_URL.lstrip('/'), 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT})
    

    【讨论】:

    • 不!不工作。但是图像现在显示应该没问题的路径。我应该对媒体文件夹使用任何 url 规则吗?
    【解决方案2】:

    成功了!...在 urls.py 文件中导入 setting.MEDIA_ROOT 后,我添加了一个媒体规则,所以它现在可以工作了..

    顺便说一句,它也需要

    {{ about.image.url }} 
    

    正如@zsquare(thanks) 之前所说,这是媒体规则

    (r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': MEDIA_ROOT}),
    

    【讨论】:

    • 有点忘了这种可能性。
    • 您的解决方案可以工作,但从 django 提供媒体服务不是一个好主意。 Apache 等更适合于此。检查我更新的答案。
    猜你喜欢
    • 2015-10-25
    • 2017-01-12
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-31
    • 2019-09-25
    相关资源
    最近更新 更多