【问题标题】:django template doesn't load image uploaded in ImageField properlydjango 模板无法正确加载 ImageField 中上传的图像
【发布时间】:2015-12-11 10:53:55
【问题描述】:

我知道这个问题已经被提出过很多次了,但是我尝试了很多不同的东西,都不起作用。我相信我可能忘记在我的代码中添加一些愚蠢的东西,只是不知道是什么。下面是我的标题模型的代码:

class Heading(models.Model):
    category = models.ForeignKey(Category)
    title = models.CharField(max_length=5000)
    content = RichTextField()
    image= models.ImageField(null=True,blank=True)
    date = models.DateField(default=datetime.now())
    time = models.TimeField(default=datetime.now())
    slug = models.SlugField(unique=True, null=True, blank=True)

我还在我的项目 settings.py 中添加了以下代码

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

下面是我的 urls.py

from django.conf.urls import include, url ,patterns
from django.contrib import admin
from django.conf import settings

urlpatterns = [
    url(r'^tinymce/', include('tinymce.urls')),
    url(r'^ckeditor/', include('ckeditor_uploader.urls')),
    url(r'^grappelli/', include('grappelli.urls')),
    url(r'^admin/', include(admin.site.urls)),
    url(r'^news/', include('news.urls')),
]
if settings.DEBUG:
    urlpatterns += patterns(
        'django.views.static',
        (r'^media/(?P<path>.*)',
        'serve',
        {'document_root': settings.MEDIA_ROOT}), )

这就是我的目录的设置方式

下面是我的模板代码

{% extends "base.html" %}

        {%block main_meat%}
        {%if headings%}
                {%for heading in headings%}
                    <h1><a href="/news/headline/{{heading.slug}}">{{heading.title}}</a></h1>
                    <br>
                    <img src='{{heading.image}}'>
                    {{heading.content|safe}}
                {%endfor%}

        {%endif%}
    {%endblock%}

当我在浏览器上检查元素时,这是我得到的图像路径

<img src="./image_name.png">

subash 是我的项目的名称,news 是应用程序的名称。我知道我已经发布了一个包含大量代码的长问题,请如果有人能指出我遗漏了什么。

【问题讨论】:

  • 你的 settings.py 中是否配置了 MEDIA_ROOT?

标签: python django django-media


【解决方案1】:

在您的模板中,而不是:

<img src='{{heading.image}}'>

尝试:

{% if heading.image %}
    <img src='{{heading.image.url}}'>
{% endif %}

【讨论】:

  • 当我这样做时它会起作用,但前提是我在我创建的每个标题对象上上传图像,否则我会收到此错误:“图像”属性没有与之关联的文件。并且可能存在我没有每个标题对象的图像的情况,可能是什么解决方法?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-18
  • 2020-03-03
  • 2015-02-22
  • 2023-03-31
  • 2017-08-01
  • 1970-01-01
相关资源
最近更新 更多