![](/img/trans.png)
[英]Django 1.8 (Python 3.4): Show different templates based on user authorization with Class-Based Views
[英]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被覆蓋,則可能不會被調用。
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.