gpt4 book ai didi

python - 如何在 `FormView.get_success_url()`中访问表单数据

转载 作者:行者123 更新时间:2023-12-03 13:33:21 26 4
gpt4 key购买 nike

目前,我有一个看起来像这样的表格:

class SelectBoard(generic.FormView):
form_class = forms.SelectBoard

def form_valid(self, form):
board_name = form.cleaned_data['name']
return redirect('leaderboard', board_name=board_name)

但是,我更喜欢做一些惯用的事,并使用 get_success_url。像这样的东西:
class SelectBoard(generic.FormView):
form_class = forms.SelectBoard

def get_success_url(self):
form = ???
board_name = form.cleaned_data['name']
return reverse('leaderboard', board_name=board_name)

但是,该表单不会传递给 get_success_url,并且与许多其他请求上下文(例如 self.requestself.kwargsself.object(在 DetailView中))不同,该表单不会作为属性附加到标准 FormView调度序列中的任何位置。有什么好的方法可以访问 get_success_url中经过清理和验证的表单数据(也就是说,无需访问 self.request.POST或从头开始重建表单)?

最佳答案

您可以重写form_valid方法以将表单写为实例属性,并在self.form中使用get_success_url:

class SelectBoard(generic.FormView):
form_class = forms.SelectBoard

def form_valid(self, form):
"""If the form is valid, redirect to the supplied URL."""
self.form = form
return HttpResponseRedirect(self.get_success_url())

def get_success_url(self):
board_name = self.form.cleaned_data['name']
return reverse('leaderboard', board_name=board_name)

关于python - 如何在 `FormView.get_success_url()`中访问表单数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48595913/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com