从URL获取参数slugs

时间:2014-04-01 10:02:41

标签: python django

我试图从URL中获取两个参数以添加到我的上下文中。

这是网址:

  url(r'^company/(?P<company>[\w\-\_]+)/?/(?P<program>[\w\-\_]+)/?$', RegistrationView.as_view(),
                       name='test'), 

观点:

class RegistrationView(RegistrationMixin, BaseCreateView):
    form_class = AppUserIntroducerCreateForm
    template_name = "registration/register_introducer.html"
    slug_field = 'company'



    def get_context_data(self, *args, **kwargs):
        context = super(RegistrationIntroducerView, self).get_context_data(**kwargs)
        print(self.get_slug_field())
        context['company'] = ??????
        context['program'] = ??????
        return context

我已经尝试了所有内容来获取值self.companykwargs['company']等,我在这里做错了什么?

3 个答案:

答案 0 :(得分:2)

Here是您的参考。

context = super(RegistrationView, self).get_context_data(**kwargs)
print(self.get_slug_field())
context['company'] = self.kwargs['company']
context['program'] = self.kwargs['program']

答案 1 :(得分:2)

试试这个

self.kwargs['company']
self.kwargs['program']

答案 2 :(得分:1)

基类的as_view类方法(View)是一个非常简单的view函数的闭包,它接受urls.py中定义的参数。然后,它将它们作为字典分配给视图类的self.kwargs属性。因此,您需要执行以下操作才能访问此数据:

self.kwargs['company']

另外,如果您从RegistrationView而不是CreateView继承了BaseCreateView,那么您的SingleObjectTemplateResponseMixin会混入您的观点和slug_fieldmodel方法将使用querysetget_object来获取所需的公司。此外,包含company实例的上下文变量Company已经为您设置,您不必自己设置它。