我正在使用 django 框架創建一個博客網站,因此我正在努力在動態頁面上顯示影像。這是我的代碼:
模型.py:
class Post(models.Model):
title = models.CharField(max_length=200, unique=True)
slug = models.SlugField(max_length=200, unique=True)
author = models.ForeignKey(User, on_delete=models.CASCADE, related_name= 'blog_posts')
updated_on = models.DateTimeField(auto_now=True)
content = models.TextField()
created_on = models.DateTimeField(auto_now=True)
status = models.IntegerField(choices=Status, default=0)
cover_image = models.ImageField()
captioned_image = models.ImageField()
caption = models.CharField(max_length=300)
class Meta:
ordering = ['-created_on']
def __str__(self):
return self.title
視圖.py:
def post(request, slug):
post = Post.objects.get(slug = slug)
context = {'post': post}
return render(request, template_name='blogger/pages.html', context=context)
在我的 html 中:
<img class="img-fluid" src="{{post.cover_image.url}}" />
我不確定我在這里做錯了什么,因為文本正確地動態顯示在我的代碼中,只是無法處理影像。
uj5u.com熱心網友回復:
為您的圖片欄位提供“upload_to”,以便您的圖片上傳到那里。
cover_image = models.ImageField(upload_to="Folder")
uj5u.com熱心網友回復:
有幾件事可能會出錯。你使用的是 Django 自帶的開發服務器還是生產服務器?默認情況下,Django 在開發程序中不提供媒體檔案。你需要通過把它放在你的url.py
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
...]
if settings.DEBUG:
urlpatterns = static(settings.MEDIA_URL,
document_root=settings.MEDIA_ROOT)
此外,請確保您已配置 MEDIA_ROOT 和 MEDIA_URL。執行此操作的最基本方法是將其添加到您的 settings.py
# Base url to serve media files
MEDIA_URL = '/media/'
# Path where media is stored
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
如果這些都不能解決問題,那么查看運行服務器的終端的輸出和/或開發人員工具中的網路選項卡的外觀可能對我們有幫助(確保只選擇影像,以便更容易讀)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/401827.html
