在我的CreateView
类中,我按照以下方式重写了form_valid()
函数:
class ActionCreateView(CreateView):
model = Action
form_class = ActionCreateForm
success_url = reverse_lazy('profile')
def get_initial(self):
initial = super(ActionCreateView, self).get_initial()
initial['request'] = self.request
return initial
def form_valid(self, form):
form.instance.user = self.request.user
print 'user: %s'%form.instance.user
try:
da = form.cleaned_data['deadline_date']
ti = datetime.now()
form.instance.deadline = datetime(da.year, da.month, da.day, ti.hour, ti.minute, ti.second )
except Exception:
raise Http404
return super(ActionCreateView, self).form_valid(form)
但事实证明,form_valid
方法从未被调用,因为user
从未打印出来。有趣的是,在forms.py中的clean
方法被调用了。
没有显示任何错误(因此我没有回溯可显示)。用户只会被重新定向到表单。 这种行为的原因可能是什么? 我在运行Django 1.5和Python 2.7。
form_invalid
方法内使用打印语句,并且是否在使用POST
? - Hedde van der Heideform_invalid
方法揭示了问题。感谢您的建议。如果您将评论写为答案,我将很高兴接受并点赞。谢谢。 - neurixform_invalid
也帮助了我。我意识到表单渲染了一个错误,而我在模板中没有为此进行适配,因此它没有显示出来。@neurix,你遇到的是否类似? - Bryce Caine