Django 1.9在基于类的视图中得到kwargs

时间:2016-10-14 22:35:55

标签: python django django-views django-urls

我想知道是否有办法直接在基于类的视图中获取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')

2 个答案:

答案 0 :(得分:3)

Alasdair的回答解决了您的问题。但是,您可以为get_absolute_url模型定义EmployeePersonal方法,该方法将充当您视图的success_url

  

您甚至不需要为success_urlCreateView提供UpdateView   get_absolute_url() - 他们将在模型对象上使用self.id   如果有的话。

您将get_absolute_url方法中的function ChangeDivSize(){ $('.bbb').height(100); $('.aaa').css( 'margin-bottom', $('.bbb').css('height')); }用于模型对象主键。

参考:

Model Forms

答案 1 :(得分:2)

您不能在kwargs中使用success_url,因为当Django在服务器启动时加载该类时,它无法访问该请求。改为覆盖get_success_url方法。

def get_success_url(self) 
    return reverse('employee-details', kwargs={'pk': self.kwargs['pk']})