要执行重定向,我需要return redirect([...])
。但是,只有在我另外做def get_success_url(self):
的情况下,这才有效。其中的url实际上并不重要,因为它使用的是mydef form_valid(self, form):
的重定向。你知道如何避免get_success_url
?你知道吗
我还测试了将返回值从form_valid
移动到get_success_url
。但我收到一个错误,返回丢失。你知道吗
class AdminRewardCreate(AdminPermissionRequiredMixin, SuccessMessageMixin, FormValidationMixin, AdminBaseRewardView, CreateView):
form_class = RewardForm
template_name = 'rewards/admin/create.html'
success_message = _("Reward has been successfully created.")
def form_valid(self, form):
instance = form.save(commit=False)
instance.event = self.request.event
# when the super method is called the instance
# is saved because it's a model form
super().form_valid(form)
return redirect(
'rewards:admin:index',
self.request.organizer.slug,
self.request.event.slug
)
def get_success_url(self):
return reverse(
'rewards:admin:index',
kwargs={
'organizer': self.request.organizer.slug,
'event': self.request.event.slug,
}
)
您不需要从
form_valid
方法调用重定向。只需返回函数的超级调用。所以我想你可以像这样更新form_valid
:它应该可以解决这个问题,还请保持
get_success_url
实现在override中,因为它将重定向到那个成功的url。你知道吗相关问题 更多 >
编程相关推荐