如何在从管理面板 Django 1.3 上传的模板中显示图像

Posted

技术标签:

【中文标题】如何在从管理面板 Django 1.3 上传的模板中显示图像【英文标题】:How to show an image in template uploaded from admin panel 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 错误。

【问题讨论】:

【参考方案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 等更适合于此。检查我更新的答案。

以上是关于如何在从管理面板 Django 1.3 上传的模板中显示图像的主要内容,如果未能解决你的问题,请参考以下文章

Django,如何将变量从 Django 管理员传递到模板?

如何在 django 管理面板中完全自定义 sidebar_menu?

`Django 管理`到项目模板中的自定义标题

如何在 django 2.2 的多个应用程序中使用其静态文件管理多个模板?

如何在 django 管理中将多个图像上传与 UPLOADIFY 集成?

Django Python将文件上传到特定文件夹