0

[장고 1.5.1] 나는 '사용자 정의'를 포함하는 방법으로 내 작은 사이트에 대한 django-profilesdjango-registration을 설정 한장고 - 장고 - 프로파일을 통합 (그리고 장고 등록) 장고 - 페이스 북

등록하는 동안 새 사용자가 사용자 이름, 암호 및 프로필 필드를 한 번에 채우도록 등록 백엔드를 구성합니다. 하지만 이제 사용자가 Facebook에 로그인하여 django-facebook을 사용하도록 허용하려고합니다. 내가 이해하는 한, django-facebook의 Facebook 로그인을 통해 로그인하면 다른 사람을 인증하지만 사용자 개체 또는 프로필 개체는 만들지 않습니다.

그래서 내가 생각한 생각은 페이스 북을 사용하고 싶다면 사용자의 잠재적 인 페이스 북 ID (나는 유일하다고 믿는다)를 보유하고있는 추가 프로필 필드를 추가하는 것입니다. 그런 다음 사용자에게 프로필이 있거나없는 경우 모든 템플릿에 대한 확인을 수행하고 그렇지 않은 경우 프로필 작성 페이지로 이동하십시오. 그런 다음 사용자가 Facebook 로그인을 통해 로그인 할 때마다 페이스 북 ID (결과적으로 프로필 개체에 해당하는 사용자 개체)와 일치하는 해당 프로필 개체와 세션을 어떻게 든 연결합니다. 필터를 적용한 다음 '신호'를 만들어야한다고 생각합니다.하지만 그렇게하는 방법이 확실하지 않습니다.

매우 복잡한 소리입니다. 어떻게 이것을 달성 할 수 있을까요?

답변

0

다음은 내가하는 일을 제안하는 방법입니다. django-facebook을 사용하지 말고 django-allauth을 살펴보십시오. 그것은 계정 (등록, 논리, 소셜 계정 연결)을 처리합니다.

또한 django-profiles에는 1.5+ 이상으로 많은 문제가 있습니다. 나는 신경 쓰지 않고 대신 django-allauth에서 처리하지 않는 추가 필드를 사용하여 내 프로파일 app 및 UserProfile 모델을 만듭니다.

내 구현

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 
    default_address = models.OneToOneField(Address, blank=True, null=True) 
    default_tshirt_size = models.CharField(blank=True, null=True, choices=constants.tshirt_sizes, max_length=50) 
    default_shoe_size = models.CharField(blank=True, null=True, choices=constants.shoe_sizes, max_length=50) 

사용자 프로필 모델을 사용하고 같은 사용자 모델 allauth를 가리키는해야한다 중 하나의 예.

from allauth.utils import get_user_model 
User = get_user_model() 

는 여기에 내가 이미하지 않은 경우 자동으로 사용자의 프로파일을 작성하는 데 사용하는 깔끔한 방법입니다.

그런 다음 사용자를 인수로 사용하는 save() 메소드를 사용하여 가입 양식 클래스를 만듭니다. 설정 파일에서이 클래스에 연결하십시오.

ACCOUNT_SIGNUP_FORM_CLASS = 'yourproject.yourapp.forms.SignupForm' 

당신은 아마 그 시점에서 user.id를 기반으로 사용자 프로필을 얻을 할 것입니다 귀하의 구현 과정을 제외하고는 어느 정도 관련 예에이 게시물을 참조하고, 프로필에 추가로 값을 저장 예.

How to customize user profile when using django-allauth

+0

답장을 보내 주셔서 감사합니다. 나는 대신 django-allauth를 조사 할 수있을 것이라고 생각하지만 내 사이트에는 이미 기존 사용자가 몇 명 있으며 django-profiles 및 django-registration과 함께 사용자 정의 userprofiles 클래스를 이미 설정했습니다. django-allauth와 Facebook을 통합하는 지저분한 방법? 다시 한 번 감사드립니다! – Stylex