python-social-auth 需要电子邮件字段
python-social-auth require email field
我的问题是,PSA 将允许用户在通过 Facebook 注册时禁用他们的电子邮件地址,这会导致整个站点出现问题。有什么方法可以在注册时要求提供这些数据吗?
我可以使用简单的
绕过它
if no email create a fake one generated like username@no-given-email.com
但这仍然是一个丑陋的解决方法。
让你开始......
在你的 settings.py
SOCIAL_AUTH_PIPELINE = (
...
'users.social_stuff.create_user',
...
)
然后在 users/pipeline/create_user.py
def create_user(backend, details, response, user=None, *args, **kwargs):
email = details.get('email')[:255]
EMAIL_RE = re.compile(r'[^@]+@[^@]+\.[^@]+')
if not EMAIL_RE.match(email):
# return to a separate page and display an error
response = HttpResponseRedirect('/some-url/')
messages.error(request, "An email address is required")
return response
else:
# logic to create a user
您还想考虑是否真的需要电子邮件。如果不是,只需设置
email = models.EmailField(blank=True)
并保存用户并礼貌地请他们稍后填写表格
我的问题是,PSA 将允许用户在通过 Facebook 注册时禁用他们的电子邮件地址,这会导致整个站点出现问题。有什么方法可以在注册时要求提供这些数据吗?
我可以使用简单的
绕过它if no email create a fake one generated like username@no-given-email.com
但这仍然是一个丑陋的解决方法。
让你开始......
在你的 settings.py
SOCIAL_AUTH_PIPELINE = (
...
'users.social_stuff.create_user',
...
)
然后在 users/pipeline/create_user.py
def create_user(backend, details, response, user=None, *args, **kwargs):
email = details.get('email')[:255]
EMAIL_RE = re.compile(r'[^@]+@[^@]+\.[^@]+')
if not EMAIL_RE.match(email):
# return to a separate page and display an error
response = HttpResponseRedirect('/some-url/')
messages.error(request, "An email address is required")
return response
else:
# logic to create a user
您还想考虑是否真的需要电子邮件。如果不是,只需设置
email = models.EmailField(blank=True)
并保存用户并礼貌地请他们稍后填写表格