2014-04-01 50 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已經爲您設置,您不必自己設置它。