我已经使用glob.iglob()
成功返回了“ media / particular_user /”目录中的每个图像文件。
问题是我不能直接在<img src="" />
上使用它,因为它是从根目录'/home/auser/django-apps/blogproject/media/blogs/1/images/'
而不是'media/blogs/1/images/'
返回的。我正在考虑从视图中循环每个结果,并删除每个字符串中的“ / home / auser / django-apps / blogproject /”,仅返回“ media / blogs / 1 / images /”。但是,还有其他更简便的方法或更合适的方法吗?因为此过程使工作量加倍。
这是我的代码:
views.py:
def blog(request, blog_slug):
"""
Blog view page
:param request:
:return:
"""
context = dict()
file_extensions = ('*.png', '*.jpg', "*.gif")
image_files = []
for file_extension in file_extensions:
image_files.extend(glob.iglob(settings.MEDIA_ROOT+"/blogs/1/images/"+file_extension, recursive=True))
context['image_files'] = image_files
context['slug'] = blog_slug
return render(request, "app_plan/plan.html", context)
blog_view.html:
<ul>
{% for image_file in image_files %}
<li class="inline">
<img src="{{image_file}}"/>
</li>
{% endfor %}
</ul>
在html中使用{{image_files}}
显示 image_files 时,将显示以下记录:
[
'/home/auser/django-apps/blogproject/media/blogs/1/images/5.png',
'/home/auser/django-apps/blogproject/media/blogs/1/images/4.png',
'/home/auser/django-apps/blogproject/media/blogs/1/images/3.png',
'/home/auser/django-apps/blogproject/media/blogs/1/images/2.png',
'/home/auser/django-apps/blogproject/media/blogs/1/images/1.png',
]
问题是我无法直接在我的<img src="{{image_file}}"/>
上使用它们,因为它是从根目录而不是从“ media /”访问的
这是我对问题的解决方案,但是有适当的方法吗?
file_extensions = ('*.png', '*.jpg', "*.gif")
image_files = []
for file_extension in file_extensions:
files = glob.iglob(settings.MEDIA_ROOT+"/sample_user/1/images/"+file_extension, recursive=True)
media_files = [file.replace(settings.MEDIA_ROOT+"/", settings.MEDIA_URL) for file in files]
image_files.extend(media_files)
context['image_files'] = image_files