【问题标题】:File Upload fails using ModelForm - no error messages though使用 ModelForm 上传文件失败 - 虽然没有错误消息
【发布时间】:2018-03-15 08:47:19
【问题描述】:

我将 ModelForms 与通用编辑视图(创建、更新、删除)一起使用。我在本练习中的目标之一是了解一些框架(Django + Bootstrap + 插件(例如 PDF.js))并尽可能少地使用自定义代码。

我可以通过管理站点创建一个“文档”记录,并且上传保存在我设置的“文件”位置。当我尝试浏览我的网站时,没有上传任何文件,尽管其他字段将被更新(显然表单验证)。 (FileField 可以为空,因为我希望能够有一个指向非数字资产的指针)。相关代码:

    # models.py
class document(models.Model):
    ref_file = models.FileField(upload_to='documents/', blank=True, null=True)

    def get_absolute_url(self):
        return reverse('knowledge_manager:doc_detail', kwargs={'pk': self.pk})

# urls.py
urlpatterns = [
    url(r'^doc$', views.docIndex.as_view(), name='doc_index'),
    url(r'^doc/(?P<pk>\w+)/det', views.docUpdate.as_view(), name='doc_detail'),
    url(r'^doc/new/$', views.docCreate.as_view(), name='doc_create'),
    url(r'^doc/(?P<pk>\w+)/update', views.docUpdate.as_view(), name='doc_update'),
    url(r'^doc/(?P<pk>\w+)/del', views.docDelete.as_view(), name='doc_delete')

]

# views.py
class docIndex(generic.ListView):
    model = document
    template_name = 'knowledge_manager/_index.html'
    context_object_name = 'document_set'

class doc_detail(generic.DetailView):
    model = reference
    template_name = 'knowledge_manager/doc_detail.html'
    context_object_name = 'document'
    form_class = doc_form
    success_url = reverse_lazy('knowledge_manager:doc_index')

class docCreate(generic.CreateView):
    model = document
    template_name = 'knowledge_manager/doc_detail.html'
    form_class = doc_form
    success_url = reverse_lazy('knowledge_manager:doc_index')

class docUpdate(generic.UpdateView):
    model = document
    template_name = 'knowledge_manager/doc_detail.html'
    context_object_name = 'document'
    form_class = doc_form
    success_url = reverse_lazy('knowledge_manager:doc_index')

class docDelete(generic.DeleteView):
    model = document
    success_url = reverse_lazy('knowledge_manager:doc_index')

# forms.py
class doc_form(ModelForm):
    class Meta:
        model = document
        fields = '__all__'

问题:

  1. 您认为哪里出了问题?带有 FileFields 的 ModelForms 肯定会使用“request.FILES”以及“instance”和“request.POST”进行初始化吗?
  2. 什么是获取有关实际情况的调试消息的好方法 发布?使用我以前只是弹出“打印(”)的函数视图 这里,值 X 是', value_x) - 有没有比仅仅重载 ModelForms 等标准函数更好的方法?

【问题讨论】:

    标签: django-forms django-generic-views django-file-upload


    【解决方案1】:

    我忽略了这个解决方案 (stackoverflow),它指出表单需要这个标签才能正确地将材料发送到 request.FILES。

    <form action="" method="post" **enctype="multipart/form-data"**>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-21
      • 2019-05-29
      • 2018-05-28
      • 1970-01-01
      • 1970-01-01
      • 2022-12-02
      • 2010-09-21
      相关资源
      最近更新 更多