覆盖django-allauth的注册视图

12

我正在要求用户使用自定义表单填写额外字段。其中一个字段中,我需要让用户选择多个分层标签。为此,我需要将这些标签从视图传递到模板signup.html。

from classes.Tags import Tags
from django.shortcuts import render_to_response
from allauth.socialaccount import views as signup_views

def signup_view(request):
    tags = Tags()
    parameters={}
    all_tags = tags.get_tags()
    parameters['all_tags'] = all_tags
    response = signup_views.signup(request)
    return response

在 urls.py 中,在所有 allauth 的 include 行之前,我添加了这行代码。

url(r'^accounts/social/signup/', 'mainapp.signup_views.signup_view', name = 'account_signup'),
url(r'^accounts/', include('allauth.urls')),

我需要的是将所有标签添加到响应中,以便我可以从模板中访问它。我该如何做到这一点?


你使用的django-allauth版本是什么?在他们的github页面上,他们说从0.9.0版本开始过渡到了基于类的视图(用于登录和注册视图)。 - Paulo Almeida
我正在使用django-allauth 0.15.0,它使用基于类的视图。 - Santosh Ghimire
@PauloAlmeida 我不太清楚类视图的工作原理...所以在将我的数据传递给视图时遇到了困难。 - Santosh Ghimire
1
我有相反的问题,我不知道django-allauth的视图是如何实现的。通常,在基于类的视图中,您可以使用ContextMixin中的get_context_data方法将任意变量传递给模板。但我不知道这是否直接适用于django-allauth的视图。 - Paulo Almeida
1个回答

11
这个链接提供了一些有关如何使用自己的注册表单的详细信息。我认为,您可以定义自己的表单(最终带有自定义小部件的标签),直接使用它,而无需干扰视图。否则,@PauloAlmeida是正确的。您可以从SignupView中继承一个新类,例如:
class MySignupView(SignupView):

    def get_context_data(self, **kwargs):
        ret = super(MySignupView, self).get_context_data(**kwargs)
        ret['all_tags'] = Tags.get_tags()

        return ret

我更倾向于使用自定义表单方法,因为它不会弄乱 urls.py


你能帮我解决这个问题吗?http://stackoverflow.com/questions/43059166/two-signup-form-using-django-allauth - pythonBeginner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接