Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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
成功时URL重定向不适用于django allauth中的自定义视图_Django_Django Views_Django Allauth - Fatal编程技术网

成功时URL重定向不适用于django allauth中的自定义视图

成功时URL重定向不适用于django allauth中的自定义视图,django,django-views,django-allauth,Django,Django Views,Django Allauth,我已经创建了自己的LocalSignup类,它使用自己的表单和验证逻辑扩展了基本的django allauth SignupView类。问题是,成功后,我无法让视图重定向到mysettings.py中的djangoLOGIN\u redirect\u URL。我在基于类的视图中包含了一个success\u url字段;我已尝试覆盖get\u success\u url函数(见下文);我还尝试使用LocalSignup.as\u视图(success\u url=“/add\u account\u

我已经创建了自己的LocalSignup类,它使用自己的表单和验证逻辑扩展了基本的django allauth SignupView类。问题是,成功后,我无法让视图重定向到mysettings.py中的django
LOGIN\u redirect\u URL
。我在基于类的视图中包含了一个
success\u url
字段;我已尝试覆盖
get\u success\u url
函数(见下文);我还尝试使用
LocalSignup.as\u视图(success\u url=“/add\u account\u select/”)
传递成功重定向。没有一个奏效。你知道我做错了什么吗

class LocalSignup(SignupView):
    form_class = AllAuthUserForm
    template_name = 'signup/social_login.html'
    success_url = '/add_account_select/'  #reverse_lazy('add_account_select')    

    def get_success_url(self):
        return '/add_account_select/'  #reverse('add_account_select')

    def dispatch(self, request, *args, **kwargs):
        # self.sociallogin = request.session.get('socialaccount_sociallogin')
        return super(LocalSignup, self).dispatch(request, *args, **kwargs)

    def form_valid(self, form):
        ret = super(LocalSignup, self).form_valid(form)
        ### MY FORM VALIDATION LOGIC
        return ret

    def get_context_data(self, **kwargs):
        ret = super(LocalSignup, self).get_context_data(**kwargs)
        ret.update(dict(username=self.sociallogin.account.user.first_name,
                        photo_url=self.sociallogin.account.get_avatar_url() ))
        return ret

在默认视图中,如果登录表单视图中有“next”字段,allauth将自动重定向到该字段

<input id="login_redirect" type="hidden" name="next" value="#" />

填写表格

      <form method="POST" action="{% url "account_login" %}">
        {% csrf_token %}
        {{form}}
        <input  type="hidden" name="next" value="/add_account_select/" />
        <button type="submit" class="btn btn-primary">Sign IN</button>
      </form>

{%csrf_令牌%}
{{form}}
登录

仅提供最新答案:

使用django allauth=0.30.0,以下内容在
views.py中运行良好

from allauth.account.views import SignupView


class LocaLSignupView(SignupView):
    success_url = '/page/to/redirect/to'

请确定:您是否更改了标准url路由,使注册视图实际上使用的是您的注册视图,而不是标准视图?我建议您在方法中放置一个断点(
import pdb;pdb.set_trace()
),以查看它是否被调用。如果调用了它,您可以单步查看代码,看看哪里出了问题。我对听到结果很感兴趣…感谢pennersr的回复。是的,我以前已经通过我的代码,我只是再次通过它。我的表单验证逻辑(如上)在allauth表单验证逻辑之前被调用。我的重写的
LocalSignup.dispatch
函数也被调用(在
CloseableSignupMixin.dispatch
之后和
RedirectAuthenticatedUserMixin.dispatch
之后和
SignupView.dispatch
之后)。因此,代码被明确调用,但无论如何,它仍然返回
LOGIN\u REDIRECT\u URL
HttpRedirectRepose,我不太清楚。再次感谢。超级
表单\u valid
是使用成功URL的地方:正如您所看到的,成功URL被检索(应该调用您的方法),然后传递给
完成注册
,后者反过来调用
执行登录
()。您的URL应该一直被传递,最终应该被用作重定向URL。添加打印或单步进行确认。谢谢pennersr。。。我会逐步解决这个问题。。。非常感谢您的回复。