在Django中显示图像

ben*_*ham 5 django image imagefield

我有一个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)
Run Code Online (Sandbox Code Playgroud)

我试图在我的模板中显示图像,但我似乎无法让它工作.我已经走了无数堆叠溢出的帖子,并没有任何运气.在我的模板中,我有

{ for post in postings }
    <img src"{{ post.image.url }} #and many variations of this
Run Code Online (Sandbox Code Playgroud)

然而其他似乎显示网址.网址似乎总是空白.任何帮助将不胜感激!

小智 12

这就是我如何运作的方式.

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/'
Run Code Online (Sandbox Code Playgroud)

models.py ...

image = models.ImageField(upload_to='img')
Run Code Online (Sandbox Code Playgroud)

urls.py(项目的)

if settings.DEBUG:
urlpatterns = urlpatterns + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Run Code Online (Sandbox Code Playgroud)

模板(.html)

<img src="{{ post.image.url }}" alt="img">
Run Code Online (Sandbox Code Playgroud)


Dee*_*hra 5

做这样的事情。这段代码在我的应用程序中运行。

视图.py:

def list(request):
  images = Image.objects.all()
  return render(request, "list.html", {'images': images})
Run Code Online (Sandbox Code Playgroud)

列表.html:

{% for i in images %}
    <img src="{{ i.image.url }}" width="500px"/>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)