我想知道是否有一种方法可以在基于类的视图中直接获取kwargs。我知道这可以在类内的函数中完成,但当我尝试这样做时,我遇到了问题:
views.py
class EmployeesUpdateStudies(UpdateView):
form_class = form_ES
model = EmployeePersonal
template_name = 'employeesControll/employees_studies_update_form.html'
success_url = reverse('employee-details', kwargs={'pk': kwargs.get('pk')})
我的网址如下
url(r'^employees/detalles/(?P<pk>[0-9]+)/$', login_required(views.EmployeeDetails.as_view()), name='employee-details')
发布于 2016-10-14 14:40:13
您不能在kwargs
中使用success_url
,因为当Django在服务器启动时加载类时,它无法访问请求。相反,重写get_success_url
方法。
def get_success_url(self)
return reverse('employee-details', kwargs={'pk': self.kwargs['pk']})
发布于 2016-10-14 14:45:09
阿拉斯代尔的回答解决了你的问题。但是,您可以为您的get_absolute_url
模型定义一个EmployeePersonal
方法,它将充当视图的success_url
:
您甚至不需要为
CreateView
或UpdateView
提供一个get_absolute_url()
--如果可用的话,它们将在模型对象上使用get_absolute_url()
。
您将在模型对象的主键的self.id
方法中使用get_absolute_url
。
参考资料:
https://stackoverflow.com/questions/40052924
复制相似问题