Django CreateView无法在提交表单

时间:2019-01-12 06:01:10

标签: javascript python django tinymce

在我的views.py中:

class DatasetRequestCreateView(CreateView):
    model = DatasetRequest
    form_class = DatasetRequestForm
    template_name = 'engine/datasetrequest_create.html'

    def get_success_url(self):
        return reverse("datasetrequest_detail", kwargs={
            'pk': str(self.kwargs['pk']),
            'slug': str(self.kwargs['slug'])})

    def form_valid(self, form):

        f = form.save(commit=False)
        f.creator = self.request.user
        f.save()
        # dsr = f.save()
        # dsr.votes.up(self.request.user.pk)

        return super(DatasetRequestCreateView, self).form_valid(form)

    def form_invalid(self, form):

        return self.render_to_response(
            self.get_context_data(form=form))

forms.py

class DatasetRequestForm(forms.ModelForm):

    class Meta:
        model = DatasetRequest
        exclude = ('creator', 'vote_score', 'num_vote_up',
               'num_vote_down', 'slug', 'best_dataset_entry', 'is_paid')

urls.py中的相关urlpatterns

urlpatterns = [
# datasetrequest views
    path('dataset-request/<int:pk>/<slug:slug>/',
         views.DatasetRequestDetailView.as_view(), name='datasetrequest_detail'),
    path('dataset-request/create/', 
         login_required(views.DatasetRequestCreateView.as_view()), name='datasetrequest_create'),
    path('dataset-request/update/<int:pk>/<slug:slug>/',
         login_required(views.DatasetRequestUpdateView.as_view()), name='datasetrequest_update'),
    path('dataset-request/delete/<int:pk>/<slug:slug>/',
         login_required(views.DatasetRequestDeleteView.as_view()), name='datasetrequest_delete'),

    path('dataset-request/pay/<int:dsr_pk>/',
         login_required(views.pay_for_dataset_request), name='datasetrequest_pay'),
]

有问题的页面:http://datafix.io/dataset-request/create 使用用户名“ test”和密码“ djangohelp”登录或创建您自己的帐户。

要重新创建错误,请输入标题,说明和(int)奖励,然后尝试提交表单。基本上,它无需创建表单即可刷新页面。

在将django-wysiwyg和tinymce集成到表单中之前,DatasetRequestCreateView可以正常工作。不知道出什么问题了。文档自述为:https://github.com/pydanny-archive/django-wysiwyg

提前谢谢

1 个答案:

答案 0 :(得分:1)

显然,您的表单无效,并且没有显示任何服务器端验证错误。您离开时看到的错误消息,例如title字段为空,由浏览器呈现,因为该字段具有HTML5 required属性。

通过为每个字段添加{{ field.errors }}并同时为{{ form.non_field_errors }}添加模板来确保正确render validation errors在模板中。

这应该让您知道出了什么问题。