我使用包social-auth-app-django设置社交身份验证。尝试在未提供电子邮件时创建用户时,我引发了以下ValueError。
users.py
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在此之前不会抛出错误 - 所以在这一点上,我是如何将用户发送回指定的模板,我可以构建它来处理这些错误,方法是将它们通过上下文
查看并查看文档,我无法看到任何我有信心参与其中的任何建议......我们将非常感谢您的建议!
答案 0 :(得分:1)
python-social-auth模块支持管道 - 所以在SOCIAL_AUTH_PIPELINE
中settings.py
的末尾定义一个方法然后在pipeline.py
中实现它将为您提供一种方法如果您的用户没有与其社交用户关联的电子邮件,请定义所需的行为:
SOCIAL_AUTH_PIPELINE = (
# any other pipeline handlers ...
'custom.signup.pipeline.prevent_without_email'
)
然后在您的自定义/注册/ pipeline.py中,您需要实现prevent_without_email
的实际部分 - 您可以在此处更详细地看到http://python-social-auth-docs.readthedocs.io/en/latest/pipeline.html
如果你需要一个特定的处理程序,你可以使用Django信号 - 在signals.py
中创建一个信号,在pipeline.py
中发出它并让callbacks.py
中的处理程序处理它,当一个未指定电子邮件。