如何在从管理面板 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】:<img class="profile_pic" src=" about.image.url " />
更新
也在你的 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 2.2 的多个应用程序中使用其静态文件管理多个模板?