簡體   English   中英

具有不同模板和參數的基於Django注冊的類的視圖

[英]Django-registration class-based views with different templates and parameters

django-registration將extra_context傳遞到“注冊表”之后 ,我已經能夠向django-registration注冊表發送額外的上下文,但不能發送給django-registration的其他頁面,例如registration_success頁面和activation_complete頁面。

我要做的就是將一個參數傳遞給每個django-registration,以告訴他們如何顯示。 但是如何做到這一點對我來說似乎還不清楚。

目前,這是我urls.py一部分:

(r'^accounts/login/$', 'django.contrib.auth.views.login', { 'extra_context' :     {'design_form': True }}),
(r'^accounts/register/complete/$', OneBoxView.as_view()),
(r'^accounts/register/$', MyRegistrationView.as_view(form_class=RegistrationForm)),
(r'^accounts/', include('registration.backends.default.urls')),

因此,例如,注冊/完成頁面使用基於OneBoxView的分類視圖,如下所示:

class OneBoxView(TemplateView):
    template_name = 'registration/registration_complete.html'
    def get_context_data(self, **kwargs):
            context = super(OneBoxView, self).get_context_data(**kwargs)
            context.update({
                'design_onebox': True,
            })

但是此視圖功能只有一個模板,我找不到如何獲取單個django注冊頁面將模板傳遞給類的方法。 設置基於類的視圖意味着源代碼( direct_to_template, {'template': 'registration/registration_complete.html'}, )無法正常工作。

我不想為每個URL編寫單獨的視圖函數,並且編寫一個大的'if'函數或% self.kwargs['template']來獲取頁面名稱似乎也% self.kwargs['template'] 對於django-registration的大多數頁面,必須有某種簡單的方法來簡單地傳遞“ design_onebox”參數?

可以通過兩種方式將變量模板名稱傳遞給TemplateView類:

  • 重新定義get_template_names方法

返回用於請求的模板名稱的列表。 必須返回一個列表。 如果render_to_response被覆蓋,則可能不會被調用。

  • 將template_name傳遞給as_view方法:
TemplateView.as_view(template_name='some_template_name')

最后一個選擇是覆蓋RegistrationView類的get_success_url方法,默​​認情況下該方法很簡單(忽略docstring)

def get_success_url(self, request, user):
    return ('registration_complete', (), {})

但是從您的問題中,我無法猜測必須從template_name傳遞到哪里。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM