【发布时间】:2016-10-13 16:48:54
【问题描述】:
我有一个 CBV:
class Publish(CreateView):
success_url = '/'
template_name = "article/publish.html"
form_class = ArticlePublish
model = Article
def get(self, request, *args, **kwargs):
print('ee')
return super(Publish, self).get(request)
def post(self, request, *args, **kwargs):
print('jj')
return super(Publish, self).post(request)
def form_valid(self, form):
print('dd')
form.instance.author = User.objects.get(id=self.request.user.id)
return super(Publish, self).form_valid(form)
def form_invalid(self, form):
print('cc')
return super(Publish, self).form_invalid(form)
当我提交此表单时:
class ArticlePublish(forms.ModelForm):
class Meta:
model = Article
fields = ['title', 'synopsis', 'content']
使用以下 HTML:
<form action="" method='POST'>
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Save" />
</form>
我明白了:
[13/Oct/2016 16:33:53] "GET /publish/ HTTP/1.1" 200 591
ee
[13/Oct/2016 16:33:56] "POST /publish/ HTTP/1.1" 200 591
ee
所以似乎即使使用 post,使用正确的 modelForm 仍然不调用 form_valid 或 form_invalid 方法。甚至 post 方法也不会被调用。
有人知道发生了什么吗?
【问题讨论】:
-
发布您的 urls.py。您还使用任何中间件吗?
-
不在工作,所以没有代码,但是是的,我添加了一个中间件,将 login_form 放入请求中。
标签: django