2014-04-01 52 views
1

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

这是网址:

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']等等,我有什么错我在这里干什么?

+1

self.kwargs是要走的路。一个例子是在这里:http://stackoverflow.com/questions/6629426/django-class-based-generic-views-and-authentication – mawimawi

回答

2

Here是SO的参考。

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

为了皮特的缘故!我尝试了所有。工作感谢你。 – Prometheus

2

尝试此

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

基类(View)的as_view类方法是围绕一个非常简单的函数view的封闭,接受在urls.py.定义的参数然后将它们作为字典分配给视图类的self.kwargs属性。因此,你需要为了访问这些数据做什么是:

self.kwargs['company'] 

另外,如果你从CreateView而不是BaseCreateView继承了你RegistrationView,你会得到SingleObjectTemplateResponseMixin你的看法混合和slug_field(连同modelqueryset)将被get_object方法用于获取期望的公司。此外,包含Company实例的上下文变量company已经为您设置,您不必自己设置它。