用Django在模板中显示图像

时间:2017-07-26 09:09:21

标签: python django

我正在尝试将图像显示在我使用Django构建的博客项目中的文章中。以下是相关代码:

settings.py:

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

urls.py(项目):

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

models.py:

class Article(models.Model):
    title = models.CharField(max_length=150)
    slug = models.SlugField(max_length=150)
    author = models.CharField(max_length=80)
    text = models.TextField(null=True)
    date = models.DateTimeField(auto_now_add=True, auto_now=False, 
                                verbose_name="Date de parution")
    image1 = models.ImageField()
    image2 = models.ImageField()
    image3 = models.ImageField()

    def __str__(self):
        return self.titre

views.py:

def article(request, id, slug):
    article = get_object_or_404(Article, id=id, slug=slug)
    return render(request, 'blog/post.html', {'article': article})

post.html:

<img src="{{ article.image1.url }}"/>
<img src="{{ article.image2.url }}"/>
<img src="{{ article.image3.url }}"/>

然而,它不起作用。图像不会出现。有什么建议 ?

1 个答案:

答案 0 :(得分:0)

在媒体之前或之后不应该有任何正斜杠,它应该只是.join(BASE_DIR, 'media')。您也不需要添加upload_to('media'),因为根是媒体。建议您不要在媒体根目录中添加图像,应在媒体文件夹中创建一个img文件夹,然后在图像域中添加upload_to('img/')

关于在文本框/文本字段中插入图像预览,是的,这是可能的,但它应该是一个单独的问题,尽管我认为有很多相同的问题。