當用戶通過Python社交身份驗證進行註冊時,他們會在我的數據庫中創建爲用戶,這很好,很棒,但是我希望他們可以添加到某個組在用戶創建時。添加通過Python社交身份驗證登錄到用戶組的用戶
如何做到這一點?
當用戶通過Python社交身份驗證進行註冊時,他們會在我的數據庫中創建爲用戶,這很好,很棒,但是我希望他們可以添加到某個組在用戶創建時。添加通過Python社交身份驗證登錄到用戶組的用戶
如何做到這一點?
有一個關於Django的社會身份驗證
from social_auth.signals import socialauth_registered
def new_users_handler(sender, user, response, details, **kwargs):
user.groups.add(Group.objects.get(name='mygroup'))
socialauth_registered.connect(new_users_handler, sender=None)
這段代碼沒有進行測試(我不是在我的電腦現在)的新用戶信號,但它應該給你一個想法。
我geeting同樣的問題試圖使用python-社會AUTH
的錯誤的組中添加用戶:「功能」對象沒有屬性連接
這裏是我的myapp.pipeline的.py
from django.db.models import signals
from django.dispatch import Signal
from social.pipeline.user import *
from django.contrib.auth.models import User, Group
from social.utils import module_member
def new_users_handler(sender, user, response, details, **kwargs):
user.groups.add(Group.objects.get(name='candidates'))
user_details.connect(new_users_handler, sender=None)
而且我app.settings.py
SOCIAL_AUTH_PIPELINE = (
'social.pipeline.social_auth.social_details',
'social.pipeline.social_auth.social_uid',
'social.pipeline.social_auth.auth_allowed',
'social.pipeline.social_auth.social_user',
'social.pipeline.social_auth.associate_by_email',
'social.pipeline.user.get_username',
'social.pipeline.user.create_user',
'social.pipeline.social_auth.associate_user',
'social.pipeline.social_auth.load_extra_data',
'social.pipeline.user.user_details',
'companies.pipeline.new_users_handler',
)
因此,爲了使工作周圍,我做了以下:
步驟1:貯存蟒-社會-AUTH管道(沒有 'companies.pipeline.new_users_handler')
步驟2:在settings.py加入SOCIAL_AUTH_NEW_USER_REDIRECT_URL =「/社交/成功/」
步驟3:加入的URL,/社交/成功/
步驟4:在views.py像
@login_required(login_url="/login")
def socialsuccess(request):
defaultgroup = Group.objects.get(name = 'name')
user = request.user
user.groups.add(defaultgroup)
return render(request, 'app/social-success.html')
它補充的函數工作得很好。但我仍然認爲這不是最好的方法。
問候
對於那些誰使用Python社會驗證,可能需要將用戶添加到某些組,這裏是我的代碼使用方法:
#pipeline.py
from django.contrib.auth.models import Group
def save_to_group(backend, user, response, *args, **kwargs):
defaultgroup = Group.objects.get(name = 'blah')
user.groups.add(defaultgroup)
,並將其添加到SOCIAL_AUTH_PIPELINE
#settings.py
SOCIAL_AUTH_PIPELINE = {
...
'app_name.pipeline.save_to_group'
}
我使用python社交認證,而不是django社交認證,所以信號位於何處? – Orca
好吧,我認爲這是因爲你使用的是django-socialauth標籤 – fasouto
對不起,但django社交授權的信號已被廢棄,請參閱:http://django-social-auth.readthedocs.org/en/latest/deprecated html的 – Orca