首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django:通过社交身份验证创建用户时引发错误时的干预

Django:通过社交身份验证创建用户时引发错误时的干预
EN

Stack Overflow用户
提问于 2018-01-07 03:41:54
回答 1查看 66关注 0票数 1

我正在使用包social-auth-app-django设置社交身份验证。我有下面的ValueError,当试图创建一个用户时,没有提供电子邮件。

users.py

代码语言:javascript
复制
    if not email:
        message = "Ooops, it doesn\'t look like an email was specified. If you are signing in via one of your social media account, please ensure there is an email address associated to your account."
        raise ValueError(message)

最初这并不是必须的,因为我会在前端用标准的表单验证来处理表单验证。然而,当集成社交登录时,这会导致问题。在开发中,这是很棒的--但基本上在这个阶段,我想把错误抛回给一个错误模板,它说他们必须提供一个电子邮件地址。我相信,在Twitter等平台上,用户最初可以在没有与帐户关联的电子邮件地址的情况下进行注册。这就是我发现这个冲突的地方。从本质上讲,social-auth-app-django在此之前并没有抛出错误-那么在这一点上,我如何将用户返回到指定的模板,我可以通过上下文传递这些错误来构建该模板来处理此类错误?

翻阅文档,我看不到任何我对运行with...any advise有信心的东西,我将非常感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-07 03:57:50

python- social -auth模块支持管道-因此在settings.py中的SOCIAL_AUTH_PIPELINE末尾定义一个方法,然后在pipeline.py中实现它将为您提供一种方法,以便在您的用户没有与其社交用户相关联的电子邮件时定义所需的行为:

代码语言:javascript
复制
SOCIAL_AUTH_PIPELINE = (
    # any other pipeline handlers ...                                            
    'custom.signup.pipeline.prevent_without_email'
)

然后,在您的自定义/signup/pipeline.py中,您将需要实现prevent_without_email的实际部分-您可以在这里查看更详细的http://python-social-auth-docs.readthedocs.io/en/latest/pipeline.html

如果您需要特定的处理程序,您可以使用Django signals -在signals.py中创建一个信号,在pipeline.py中发出它,并让callbacks.py中的处理程序在未指定电子邮件时处理它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48131186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档