在我的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))
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
提前谢谢
答案 0 :(得分:1)
显然,您的表单无效,并且没有显示任何服务器端验证错误。您离开时看到的错误消息,例如title
字段为空,由浏览器呈现,因为该字段具有HTML5 required
属性。
通过为每个字段添加{{ field.errors }}
并同时为{{ form.non_field_errors }}
添加模板来确保正确render validation errors在模板中。
这应该让您知道出了什么问题。