0

我有一個使用CreateView CBV的視圖(CreateWorkRelationView)。在URL中,傳遞了一個參數(用戶),我需要引用很多參數。是否可以在我的課程中設置對象用戶以外的功能?那麼你是否可以從函數外部訪問kwargs?在基於類的視圖中使用url參數Django

所以我基本上只是想下面的行添加到我的班

user = get_object_or_404(Contact.pk=kwargs['user']) 

在然而此刻,返回

NameError: name 'kwargs' is not defined

這是我的課

class CreateWorkRelationView(LoginRequiredMixin, SuccessMessageMixin, CreateView): 
    template_name = 'groups/group_form.html' 
    form_class = WorkRelationForm 
    model = WorkRelation 
    title = "Add a work relation" 
    success_message = "Workrelation was successfully created." 


    def form_valid(self, form): 
     user = get_object_or_404(Contact, pk=self.kwargs['user']) 
     form.instance.contact = user 
     return super(CreateWorkRelationView, self).form_valid(form) 

    def get_success_url(self): 
     return reverse_lazy('contacts:contact_detail', self.kwargs['user']) 

的之所以我想這樣做,是因爲:

  1. 我想在我的標題字符串中使用這個對象。
  2. 我將添加更多功能,他們都需要這個對象。
+0

如果您正在尋找已登錄的用戶可以使用self.request.user但我可能失去了一些東西,但 – Arnaud

回答

1

不,這不可能工作;你沒有用戶,或者kwargs,或者在定義課程時沒有請求。您需要在請求時調用的其中一個方法內執行此操作;可能是get_context_dataget_object

+0

我是能夠TOT這個context_data其他函數引用? – hY8vVpf3tyR57Xib

+0

如果將其分配給實例屬性,則爲。 –

0

我設法做到這一點的方法是使用一個FormView。

在我的urls.py我有

regex=r'^my/path/(?P<pk>\d+)$', 

在我的意見

class MyCreateView(LoginRequiredMixin, FormView): 
    def form_valid(self, form): 
     data = self.kwargs['pk'] 

它運作良好。

相關問題