use*_*734 5 forms django validation file-upload
我使用 django 生成的表单视图收到 This field is required 错误。
我有一个扫描模型,如下所示:
class Scan(models.Model):
    device = models.ForeignKey(Device, null=True, on_delete=models.SET_NULL)
    created_at = models.DateTimeField('Created', auto_now=True)
    data = models.FileField(upload_to='uploads/')
    def __str__(self):
        return str("{}-{}".format(self.device, self.created_at))
我定义了一个 CreateView:
class ScanCreate(LoginRequiredMixin, CreateView):
    model = Scan
    fields = '__all__'
我的网址路线是
urlpatterns = [
    ...
    path('scan/create/', views.ScanCreate.as_view(), name='scan-create'),
    ...
]
最后是 scan_form.html 模板
    {% block content %}
  <form action="" method="post">
    {% csrf_token %}
    <table>
    {{ form.as_table }}
    </table>
    <input type="submit" value="Submit">
  </form>
{% endblock %}
在选择要上传的文件并提交表单时,我收到“此字段为必填字段”。错误并且请求失败:
Naz*_*ter 10
您代码中的主要问题是您没有enctype="multipart/form-data"在表单中使用,因此当请求发送到服务器时,集合中没有该文件request.FILES。
你必须为你的表单编写 html 代码,如下所示:
{% block content %}
  <form action="" method="post" enctype="multipart/form-data">
    {% csrf_token %}
    <table>
    {{ form.as_table }}
    </table>
    <input type="submit" value="Submit">
  </form>
{% endblock %}
并确保操作指向正确的 URL。
最后,这是文件上传的文档:https://docs.djangoproject.com/en/stable/topics/http/file-uploads/
| 归档时间: | 
 | 
| 查看次数: | 3962 次 | 
| 最近记录: |