【发布时间】: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/...)
编辑:
这被标记为重复,我看到了该帖子并尝试更改我的代码以反映该代码,但它不起作用。觉得最好发我自己的。
提前致谢,本站的第一个问题!
【问题讨论】:
-
<img src="{{post.image.url}}"> -
你在主 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