努力使用django显示图像
Struggling to display images using django
我正在使用 django 框架创建一个博客网站,因此我很难在动态页面上显示图像。这是我的代码:
models.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
views.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}}" />
我不确定我在这里做错了什么,因为文本在我的代码中动态正确显示,只是无法处理图像。
为您的图像字段提供一个“upload_to”,以便您的图像上传到那里。
cover_image = models.ImageField(upload_to="Folder")
有些地方可能出了问题。您使用的是 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/')
如果这些都不能解决问题,那么查看服务器所在终端的输出可能对我们有所帮助 运行 and/or您的开发人员工具中的网络选项卡是什么样子的(确保只有 select 张图片,这样更容易阅读)
我正在使用 django 框架创建一个博客网站,因此我很难在动态页面上显示图像。这是我的代码:
models.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
views.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}}" />
我不确定我在这里做错了什么,因为文本在我的代码中动态正确显示,只是无法处理图像。
为您的图像字段提供一个“upload_to”,以便您的图像上传到那里。
cover_image = models.ImageField(upload_to="Folder")
有些地方可能出了问题。您使用的是 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/')
如果这些都不能解决问题,那么查看服务器所在终端的输出可能对我们有所帮助 运行 and/or您的开发人员工具中的网络选项卡是什么样子的(确保只有 select 张图片,这样更容易阅读)