【问题标题】:Image not showing in Django [duplicate]图像未显示在 Django [重复]
【发布时间】:2017-06-06 09:43:46
【问题描述】:

我不知道为什么图像没有在 Django 中显示。与媒体根有关吗?

设置代码

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

模型代码

from django.db import models

从 django.core.urlresolvers 导入反向

在这里创建您的模型。

类帖子(models.Model):

## Post Properties
title = models.CharField(max_length=255)
slug = models.SlugField(max_length=255, unique=True)
summary = models.CharField(max_length=255)
content = models.TextField()
published = models.BooleanField(default=True)
created = models.DateTimeField(auto_now_add=True)
image = models.ImageField(upload_to='img',default='media/placeholder.png')


class Meta:
    ordering = ['-created']

    def __unicode__(self):
        return u'%s'% self.title

def get_absolute_url(self):
        return reverse('blog.views.post', args=[self.slug])

我没有为图片添加网址,会不会有问题?

网址

urlpatterns = [
url(r'^post/(.*)', blogViews.post),
url(r'^about/$', blogViews.about),
url(r'^$', blogViews.index),
url(r'^admin/', admin.site.urls),

index.html 代码

<img src="{{post.image}}">
<p> {{post.image}} </p>

**Views.py **

from django.shortcuts import render, render_to_response, get_object_or_404
from django.http import HttpResponse
from .models import Post

# Create your views here.


def index(request):
    posts = Post.objects.all()
    return render(request, 'index.html', {'posts': posts})



def post(request, slug):
    return render_to_response('post.html', {
    'post': get_object_or_404(Post,slug=slug)
    }) 

def about(request):
    return render(request, 'about.html', {})

在网站中,所有显示的是一张空白图片以及文件名(默认为“placeholder.png”或我通过管理员上传的 img/...)

编辑:

这被标记为重复,我看到了该帖子并尝试更改我的代码以反映该代码,但它不起作用。觉得最好发我自己的。

提前致谢,本站的第一个问题!

【问题讨论】:

  • &lt;img src="{{post.image.url}}"&gt;
  • 你在主 urls.py 中添加了媒体 url 吗?
  • 您是否定义了任何东西来实际提供媒体文件?
  • 我没有在 urls 文件中添加任何内容。我尝试添加 (r'^media/(?P.*)$', 'django.views.static.serve', { 'document_root': settings.MEDIA_ROOT}) 但我收到的只是一个错误跨度>

标签: python django python-3.x django-models django-views


【解决方案1】:

试试这个,

<img src="{{post.image.url}}">

另外,添加您的urls.py,

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # ... the rest of your URLconf goes here ...
] 

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

如需了解更多关于静态服务的信息,请参阅文档here...

【讨论】:

  • 同样的错误,我没有在 urls.py 文件中添加任何内容。这会影响这个吗?
  • 不确定发生了什么。它显示了所有默认图片,但没有显示我手动上传的图片。
  • 你能展示你对这个模板的看法吗?
  • 在我的问题中更新
  • 帖子是否有多个图像??请也发布完整的models.py?
猜你喜欢
  • 2019-06-22
  • 1970-01-01
  • 2021-08-16
  • 1970-01-01
  • 2013-02-14
  • 2018-05-14
  • 2021-11-19
  • 2017-04-29
  • 1970-01-01
相关资源
最近更新 更多