django - 有没有办法拆分上传的文件扩展名并将其显示在不同的 html 元素中?
问题描述
我从 index.html 页面上传文件,扩展名是 .jpg、.pdf、Docx 和 mp4 到我的项目中,并且只能显示 jpg 文件并为此使用 scr,我需要根据扩展名和显示使用 if else 条件在 HTML 元素中。所以我需要拆分文件名并获取该扩展名并相应地使用 if-else 条件。我无法使用 split() 为 index.html 页面拆分文件。请帮助和下面包含的所有代码
索引.html
{% for i in phone %}
<!-- <img src="{{i.document.url}}" alt="Girl in a jacket" width="200" height="200; display: flex;"> -->
<h1>{{i.document.url}}</h1>
<h2>{{i.document.path}}</h2>
{% endfor %}
视图.py
def Home(request):
if request.method == 'POST':
if len(request.FILES) == 0:
return redirect("/drive")
else:
photo = request.FILES['doc']
Upload.objects.create(document = photo)
return redirect("/drive")
if request.method == "GET":
photo = Upload.objects.all()
context = {
'phone': photo
}
return render(request, 'Home.drive.html', context)
模型.py
from django.db import models
# Create your models here.
class Upload(models.Model):
document = models.FileField(upload_to='documents')
- 注意:等待积极的回应,请我是初学者,所以我需要完整的代码而不是提示。
解决方案
您可以像这样使用自定义TemplateTag。
我有一条建议给你:我认为最好使用upload_to 属性的函数。
def get_image_upload_path(instance, filename):
return os.path.join('Products', 'images', instance.name, filename)
class YourModel(models.model):
image = models.ImageField(upload_to=get_image_upload_path)
推荐阅读
- snyk - Snyk 测试返回 Failed to test pip 项目错误
- angular - Angular 更新破坏了 Tailwindcss
- javascript - 反应原生样式表
- javascript - 类型上不存在属性
- laravel - SQLSTATE [23000]:违反完整性约束:1048 列“电子邮件”不能为空
- python - 从 CSV 创建字典而不重复顶级
- laravel - Laravel Fortify 返回 Not Found
- c++ - 本征中的伪表达式是什么?
- mysql - 使用 SQL IN 的不匹配记录
- haskell - 如何在不依赖类型推断的情况下排除无意义的类型?