我是django的初学者所以对某事感到震惊,我无法知道该怎么做。 我想将存储在数据库中的图像显示到我的模板中。图像上传到'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。
答案 0 :(得分:0)
好的,首先,如果你能够指定确切的部分,或者错误,那么你会感觉很棒。
其次,如果您的唯一目的是显示图片,具体取决于某些条件,并且永远不会,您的网络应用用户将会上传任何图片,即没有 表单 ,其中用户正在上传Facebook上传等图片,从技术上讲,您 don& #39;确实需要模型中的ImageField。
您只需将图片名称存储在 CharField 中,然后在 视图 中编写一个功能即可为 模板 中的 模板 创建相同的URL,以便从 static / img 目录中读取图像,因为您已经指定了静态的。
此外,Django官方文档说你需要拥有&#34; Pillow&#34;安装使用ImageField()。 https://docs.djangoproject.com/en/1.9/ref/forms/fields/#imagefield
同样,指定错误或您遇到的部分将有助于解决您的问题
答案 1 :(得分:0)
{% 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 %}
由于您没有使用{% static "" %}
,因此您需要在图片的网址前添加/
。
答案 2 :(得分:0)
我唯一缺少的是MEDIA_URL和MEDIA_ROOT。 将这些改为: -
from django.conf.urls.static import static
urlpatterns = [
...................
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
并更新了url.py文件: -
p = multiprocessing.Process(target=mp_worker(raster))
参考: - Images from ImageField in Django don't load in template
答案 3 :(得分:0)
选项-1:无需在post.img_breif之后输入.url。
{% for post in posts %}
<div class="panel panel-lg panel-custom">
<div class="panel-heading post-heading1">
<img src="{{ post.img_brief}}">
</div>
....
</div>
{% endfor %}
如果仍然无法使用以下代码:
<强> models.py 强>
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 image_thumbnail(self):
return '<div class="panel-heading post-heading1"><img src="%s"/></div>' % (self.img_brief)
image_thumbnail.allow_tags = True
image_thumbnail.short_description = 'Image Breif'
def __str__(self):
return self.title
<强>模板强>
{% for post in posts %}
<div class="panel panel-lg panel-custom">
{{ post.image_thumbnail }}
....
</div>
{% endfor %}