提问人:M4ti06 提问时间:11/13/2023 更新时间:11/13/2023 访问量:29
Django:可以显示媒体子文件夹中的图像吗?
Django Is it possible to display images from media subfolders?
问:
我有一个项目,管理员(编辑)正在将图像上传到数据库,它们将显示在文章和文章的 minatures(列表的形式)中。
我设法配置了显示媒体文件夹中的图像,但它没有按照我想要的方式工作。
我想在“媒体”文件夹的特定子文件夹中上传图像。例如: 博客/媒体/reviews_images 博客/媒体/reviews_minatures_images
我知道可以上传到特定文件夹,但这不是这个问题的重点。 我很想知道如何配置MEDIA ROOT以显示来自其不同子文件夹的图像。
现在,我可以将其中一个文件夹指定为 MEDIA ROOT,并且该文件夹中的图像正确显示,但另一个文件夹中的图像根本无法显示。
是否可以配置?
我的代码:
models.py
fs_reviews_images = FileSystemStorage(location="blog/media/reviews_images")
class ReviewsImages(models.Model):
image = models.ImageField(storage=fs_reviews_images)
description = models.CharField(max_length=50)
fs_reviews_minature_images = FileSystemStorage(location="blog/media/reviews_miniatures_images")
class ReviewsMiniaturesImages(models.Model):
miniature_image = models.ImageField(storage=fs_reviews_minature_images)
description = models.CharField(max_length=50)
game_title = models.CharField(max_length=50)
def __str__(self):
return f"{self.game_title} {self.description}"
urls.py
urlpatterns = [
path("admin/", admin.site.urls),
path("", views.HomeView.as_view(), name="home"),
path("reviews", views.ReviewsListView.as_view(), name="reviews"),
path("reviews/article/<pk>", views.ReviewsDetailView.as_view(), name="reviews-detail")
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
settings.py
MEDIA_ROOT = os.path.join(BASE_DIR, "blog/media/reviews_miniatures_images")
MEDIA_URL = '/media/'
模板
<img src="{{ MEDIA_URL }}{{ review.review_minature_image.miniature_image }}" class="card-img-top"
alt="{{ review.review_minature_image.description }}">
我尝试了几种解决方案。我试图在逗号之后的文档根参数中传递不同的文件夹,一些静态函数。这些都不像我预期的那样有效。我在文档中找不到解决方案。
我希望在一个MEDIA_URL下显示来自“媒体”文件夹的不同子文件夹的图像。
答:
0赞
PMC
11/13/2023
#1
您可以简单地使用:.url
<img src="{{ review.review_minature_image.miniature_image.url }}">
例如,这是为以下属性提供的路径级别:
car.photo
给<ImageFieldFile: cars/chevy.jpg>
car.photo.name
给'cars/chevy.jpg'
car.photo.path
给'media/cars/chevy.jpg'
car.photo.url
给'http://www.example.com/cars/chevy.jpg'
评论