如何在Django模板中显示ImageField

时间:2018-09-10 15:26:37

标签: django django-models

我从堆栈溢出看了这个问题。 question 1 question 2关于在模板中显示图像字段并相应地遵循。但是,尽管图像已正确上传到文件夹中,但是图像并未显示在模板中。

models.py

class Book(models.Model):
      book_thumbnail = models.ImageField(upload_to='images/%Y/%m/%d', blank=True, null=True)

views.py

def home(request):
    book = Book.objects.all()
    return render(request, 'books/books.html', context={'books': book})

template.html

<img class="group list-group-image" src="{{ books.book_thumbnail.url }}" width='240' alt="alt" />

settings.py

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

urls.py

urlpatterns = [
    path('books/', views.home),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

1 个答案:

答案 0 :(得分:0)

打印介质根目录对我有用。

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
print(MEDIA_ROOT)

这是我在settings.py中编辑的内容