在Django中显示图像
问题描述:
我有一个django应用程序,允许用户使用它提交图像。现在我的模型看起来像在Django中显示图像
class Posting(models.Model):
title = models.CharField(max_length=150)
images = models.ForeignKey(Image, null=True)
class Image(models.Model):
img = models.ImageField(upload_to="photos/",null=True, blank=True)
而我试图在我的模板中显示图像,但我似乎无法得到它的工作。我已经去了无数堆栈溢出帖子,并没有任何运气。在我的模板中,我有
{ for post in postings }
<img src"{{ post.image.url }} #and many variations of this
但是其他似乎显示的网址。该网址似乎总是空白。任何帮助将不胜感激!
答
这是我如何得到它的工作。
settings.py
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
)
MEDIA_ROOT = (
BASE_DIR
)
MEDIA_URL = '/media/'
models.py ...
image = models.ImageField(upload_to='img')
urls.py(项目)
if settings.DEBUG:
urlpatterns = urlpatterns + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
模板档案(.html)
<img src="{{ post.image.url }}" alt="img" class="img-responsive img-rounded">
答
你应该想到一个类似于:
{% for post in postings %}
<img src="{{ post.image.url }}">
{% endfor %}
有几个需要注意的地方在这里 -
- 图像会担任一个文件,无论是服务于您的应用程序(的runserver,nginx的, apache等)需要有能力路由该文件。
- 您必须确保您正在构建模板引擎使用的上下文。它会默默无法在上下文中找不到的值。
+0
谢谢,我试过,但没有运气。如果每个帖子都有一个“foreignKey”,这仍然有效吗?这是一对多正确的? – bencunningham 2015-03-31 04:17:30
答
模板标签应该是:
<img src="{{ post.images.img.url }}" ... >
答
做这样的事情。此代码正在我的应用程序中工作。
views.py:
def list(request):
images = Image.objects.all()
return render(request, "list.html", {'images': images})
list.html:
{% for i in images %}
<img src="{{ i.image.url }}" width="500px"/>
{% endfor %}
试试这个 -
因为你发布模型有 '图像' 命名的图像模型的属性。 –
ancho
2015-03-31 05:19:25
'
'试试这个。我想问题是相对路径。追加'/'到路径。 –
2015-03-31 05:30:43