我是姜戈的初学者,对一件事很着迷,我不知道该怎么做。我想显示一个存储在数据库中的图像到我的模板。图像上载到文件夹“static/img”。
这是我的数据库:
class Post(models.Model):
author = models.ForeignKey('auth.User')
title = models.CharField(max_length=300)
content_brief = models.TextField()
content_major = models.TextField()
img_brief = models.ImageField(upload_to='static/img')
image_major = models.ImageField()
created_date = models.DateTimeField(default=timezone.now)
publish_date = models.DateTimeField(blank=True, null=True)
def publish(self):
self.publish_date = timezone.now()
self.save()
def __str__(self):
return self.title
这是我的模板:
{% for post in posts %}
<div class="panel panel-lg panel-custom">
<div class="panel-heading post-heading1">
<img src="{{ post.img_brief.url }}">
</div>
....
</div>
{% endfor %}
我的views.py:
def home_page(request):
posts = Post.objects.filter(publish_date__lte=timezone.now()).order_by('publish_date').reverse()
return render(request, 'home.html', {'posts': posts})
使用TEMPLATE_DIRS、STATIC_ROOT和static_url更新settings.py。
好吧,首先,如果你能指定你所困的准确的部分或错误,那就太好了。
其次,如果您的唯一目的是根据某种条件显示图像,而您的Web应用程序用户永远不会上传任何图像,也就是用户上传图像时没有像Facebook上传那样的表单,那么从技术上来说,您的模型中并不真正需要ImageField。
您可以简单地将图像名存储在CharField中,然后在视图中编写一个函数,为其构建一个URL,该URL可以在模板中使用,以便从静态/img目录读取图像,因为您已经指定了静态。
此外,Django的官方文档说,您需要安装“pillow”才能使用ImageField()。https://docs.djangoproject.com/en/1.9/ref/forms/fields/#ImageField
同样,指定错误或您被卡住的部分将对解决问题有很大帮助