我想知道是否有办法直接在基于类的视图中获取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')
答案 0 :(得分:3)
Alasdair的回答解决了您的问题。但是,您可以为get_absolute_url
模型定义EmployeePersonal
方法,该方法将充当您视图的success_url
:
您甚至不需要为
success_url
或CreateView
提供UpdateView
get_absolute_url()
- 他们将在模型对象上使用self.id
如果有的话。
您将get_absolute_url
方法中的function ChangeDivSize(){
$('.bbb').height(100);
$('.aaa').css( 'margin-bottom', $('.bbb').css('height'));
}
用于模型对象主键。
参考:
答案 1 :(得分:2)
您不能在kwargs
中使用success_url
,因为当Django在服务器启动时加载该类时,它无法访问该请求。改为覆盖get_success_url
方法。
def get_success_url(self)
return reverse('employee-details', kwargs={'pk': self.kwargs['pk']})