django - Django:媒体图像未显示在模板中
问题描述
我正在尝试创建一个博客并为每个帖子显示图像。我正在尝试在网页上显示用户上传的图像。当我使用 Django 管理界面上传图像文件时(我使用 ImageField 为发布图像制作了模型),图像正确存储在 /media/images 中。但我无法在我的网页上显示图像。但是,当我使用 GoogleChrome 检查我的模板时,我的文件路径正常,但出现 500 错误(about-us-2.jpg:1 Failed to load resource: 服务器响应状态为 500(Internal Server Error )。
媒体设置.py
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'core/static'),
)
项目 urls.py:
from django.conf.urls import include, url
from django.contrib import admin
from django.urls import path
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin' , admin.site.urls),
path("", include("authentication.urls")),
path("", include("app.urls")),
]+ static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)
应用程序 urls.py:
rom django.urls import path, re_path
from django.conf.urls import include, url
from app import views
from . import views
urlpatterns = [
path('', views.index, name='home'),
url(r'^blog$', views.blog_view, name ='blog'),
url(r'^blog/(?P<id>[0-9]+)$', views.post_view, name ='blog_post'),
re_path(r'^.*\.*', views.pages, name='pages'),
]
视图.py
def blog_view(request):
query = Post.objects.all().order_by('-date')
context = {'post_list' : query}
return render(request, 'blog/blog.html', context)
模板:Blog.html
{% for post in post_list %}
<img src="{{ post.image.url }}" class="card-img-top rounded-top">
{% endfor %}
模型.py
class Post(models.Model):
title = models.CharField(max_length=255)
author = models.CharField(max_length=255, blank=True)
image = models.ImageField(blank=True, upload_to="images/")
解决方案
试试这个方法:
MEDIA_ROOT = os.path.join(BASE_DIR, "APPName", "media")
MEDIA_URL = "/media/"
然后,您可以在以下位置找到图像:
<img src="media/test.png">
文件夹“媒体”位于项目的主目录中(不是应用程序!):
项目
- 媒体
- 静止的
- 应用程序
- 模板
- 视图.py
推荐阅读
- reactjs - 如何使用 error.response.status 捕获打字稿错误
- apache-spark - spark AccumulatorV2 的问题。我是 apache spark 的新手,所以我不知道为什么会抛出这个问题
- javascript - 加一 - Leet 代码问题(简单) - 所有测试用例都通过了,除了 javascript 中的一个
- autodesk-forge - 使用 Forge API 在 Autodesk Construction Cloud 中添加或更改自定义属性的描述
- python - 使用 Django 获取图像上点击事件的坐标
- linux - 无法在 Linux 主机和 Linux VMware Workstation 来宾之间剪切和粘贴
- javascript - 我在 vs 代码上安装 create-react-app 但由于互联网问题安装停止,当我安装此错误时
- javascript - React App 没有编译我的图像或视频
- javascript - 所有选项卡上的 Window.onUnload
- java - 将 0 或 1 移到一侧,移位次数较少