在django-registration passing extra_context to Registration Form之后,我可以向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-registration页面将模板传递给类。设置基于类的视图意味着源代码(direct_to_template,
{'template': 'registration/registration_complete.html'},
)无法工作。
我不想为每个网址编写单独的视图函数,并且编写一个大的“if”函数或% self.kwargs['template']
来获取页面的名称似乎也是不优雅的。 django-registration的大多数页面必须有一些优雅的方式才能简单地传递“design_onebox”参数?
答案 0 :(得分:2)
变量模板名称可以通过两种方式传递给TemplateView
类:
get_template_names
方法返回要用于请求的模板名称列表。必须返回一个列表。如果覆盖了render_to_response,则无法调用。
as_view
方法:TemplateView.as_view(template_name='some_template_name')
最后一个选项是覆盖get_success_url
类的RegistrationView
方法,默认情况下只是(省略docstring)
def get_success_url(self, request, user):
return ('registration_complete', (), {})
但是根据你的问题,我无法猜测template_name
必须通过哪里。