我正在使用包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在此之前并没有抛出错误-那么在这一点上,我如何将用户返回到指定的模板,我可以通过上下文传递这些错误来构建该模板来处理此类错误?
翻阅文档,我看不到任何我对运行with...any advise有信心的东西,我将非常感激!
发布于 2018-01-07 03:57:50
python- social -auth模块支持管道-因此在settings.py中的SOCIAL_AUTH_PIPELINE末尾定义一个方法,然后在pipeline.py中实现它将为您提供一种方法,以便在您的用户没有与其社交用户相关联的电子邮件时定义所需的行为:
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中的处理程序在未指定电子邮件时处理它。
https://stackoverflow.com/questions/48131186
复制相似问题