python - 如何清除在注册表单中上传文件时需要填写此字段的表单错误
问题描述
我正在尝试创建一个注册页面,其中多个用户必须在注册页面时上传文件,但是在遵循大多数教程之后,没有任何成果,以确保上传的文件成功,如果可以,请提供帮助试过uploaded_file = request.Files['document], fs = FileSystemStorage[], file upload way 我也试过if request.method == 'POST' and 'document' in request.FILES: upload_file = request.FILES ['document'] 也是如此。所以
views.py
def DistributorSignUpView(request):
if request.method == 'POST':
form = DistributorSignUpForm(request.POST, request.FILES)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
messages.success(request, 'Account was created for ' + username)
context = ({'form': form})
return render(request, 'dashboard.html', context)
else:
form = DistributorSignUpForm()
return render(request, "distregister.html", context={'form': form})
**forms.py**
class DistributorSignUpForm(UserCreationForm):
Tax_compliance_certificate = forms.FileField(required=True)
class Meta(UserCreationForm.Meta):
model = User
fields = ['username', 'email', 'password1', 'password2', 'Tax_compliance_certificate']
@transaction.atomic
def save(self):
user = super().save(commit=False)
user.is_distributor = True
user.save()
distributor = Distributor.objects.create(user=user)
distributor.Tax_compliance_certificate.add(*self.cleaned_data.get('Tax_compliance_certificate'))
return user
**HTML**
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
<div class="input-group mb-3">
<div class="input-group-append">
<span class="input-group-text"><i class="fas fa-user"></i></span>
</div>
{{form.username}}
</div>
<div class="input-group mb-2">
<div class="input-group-append">
<span class="input-group-text"><i class="fas fa-envelope-square"></i></span>
</div>
{{form.email}}
</div>
<div class="input-group mb-2">
<div class="input-group-append">
<span class="input-group-text"><i class="fas fa-key"></i></span>
</div>
{{form.password1}}
</div>
<div class="input-group mb-2">
<div class="input-group-append">
<span class="input-group-text"><i class="fas fa-key"></i></span>
</div>
{{form.password2}}
</div>
<div class="file-field">
<input type="file" hidden id="file">
<input type="button" value="Upload Tax Cert" onclick="btnFile()"
class="btnFile" name ="document">
<span id="filename" class="filename">No file chosen</span>
</div>
<div class="d-flex justify-content-center mt-3 login_container">
<input class="btn login_btn" type="submit" value="Register Account">
</div>
</form>
解决方案
您必须获取在 POST 请求中上传的文件列表
files_uploaded = self.request.FILES.getlist('my-file')
with
然后,您使用 Python 的功能将它们上传到服务器。您还需要为您的输入标签命名,以便您可以在 POST 请求中找到它。
<input name="my-file"...>
推荐阅读
- node.js - 当heroku更改DATABASE_URL时如何处理postgres连接
- php - 如何修复带有 PHP 错误的电子邮件脚本,我不确定这是否是 WAMP 服务器的问题?
- javascript - 缩放用户上传的图像 onclick 按钮
- git - 为什么我最终会得到一堆合并提交?
- java - 在猜数游戏中用 FOR 循环实现/替换 WHILE 循环
- python - 如何处理时间间隔的求和和乘法?
- pandas - Pandas 以批量大小随机排列顺序数据
- python - 如何为 pcolormesh 指定轴?
- docker - 用于源 bash 配置文件的 Docker RUN 指令
- r - 如何转换具有内存大小的列 Ex。MB & KB,我想要 MB 中的所有值?