Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Django/Allauth中将参数传递给覆盖视图_Django_Django Allauth_Django 1.4 - Fatal编程技术网

在Django/Allauth中将参数传递给覆盖视图

在Django/Allauth中将参数传递给覆盖视图,django,django-allauth,django-1.4,Django,Django Allauth,Django 1.4,在Django 1.4和Allauth中,我尝试创建两个不同的注册页面。当我说“不同”时,我指的是两个不同的URL和“html布局” 以下是我到目前为止所做的。它“工作”,但不会将“is\u alternate\u template”变量传递给HTML模板: 在URL.py中: url(r'^accounts/', include('allauth.urls')), url(r'^abc/alternate-signup/?$','project.views.alternate_signup'

在Django 1.4和Allauth中,我尝试创建两个不同的注册页面。当我说“不同”时,我指的是两个不同的URL和“html布局”

以下是我到目前为止所做的。它“工作”,但不会将“is\u alternate\u template”变量传递给HTML模板:


在URL.py中:

url(r'^accounts/', include('allauth.urls')),
url(r'^abc/alternate-signup/?$','project.views.alternate_signup'),

在views.py中:

def alternate_signup(request):
    from allauth.account import views as account_views
    is_alternate_template = True
    return account_views.signup(request, locals(), context_instance=RequestContext(request))

在templates/account/signup.html中

{% if is_alternate_template %}
display the alternate layout of the signup page
{% else %}
display the 'standard' layout of the signup page
{% endif %}

在Allauth模块中,以下是帐户/视图中的注册视图(这是我从Allauth模块中重写的视图,而不是我自己编写的):


您需要做的是在views.py中创建SignupView的子类,它可以非常简单

class SignupViewExt(SignupView):

    template_name = "account/signup_alternate.html"
是的,就这么简单,因为模板是唯一需要更改的东西。然后将URL.py更改为

url(r'^abc/alternate-signup/?$',project.views.SignupViewExt.as_view()),
如果要传递其他参数:

url(r'^abc/alternate-signup/?$',project.views.SignupViewExt.as_view(param='some value')),

然后可以将其注册为self.param。

谢谢,这很有效!你知道我怎么还能把变量传递给那个新模板吗?(我需要扩展的一些基本模板使用变量来显示或不显示边栏)我获取SignupViewExt.as_view收到一个无效的关键字'param'Ok,我使用这个问题来实现它:通过添加“def get_context_data(self,**kwargs):context=super(SignupViewExt,self)。获取_context_data(**kwargs)context['my_param']=“我的值”返回上下文”
url(r'^abc/alternate-signup/?$',project.views.SignupViewExt.as_view(param='some value')),