django-allauth로 "페이스 북으로 로그인"작업을 만들었습니다. 그러나 allauth가 자동으로 활성화되지 않도록 만드는 새 사용자 계정을 원합니다.장고에서 새 사용자 계정 수동 활성화
기본적으로 장고 관리 페이지에서 모든 새 계정을 활성화하고 싶습니다.
이 문제에 대한 최선의 해결책은 무엇입니까?
감사합니다.
django-allauth로 "페이스 북으로 로그인"작업을 만들었습니다. 그러나 allauth가 자동으로 활성화되지 않도록 만드는 새 사용자 계정을 원합니다.장고에서 새 사용자 계정 수동 활성화
기본적으로 장고 관리 페이지에서 모든 새 계정을 활성화하고 싶습니다.
이 문제에 대한 최선의 해결책은 무엇입니까?
감사합니다.
계정이 활성화되었는지 여부를 어떻게 확인합니까? User
모델에 어떤 종류의 필드가 필요합니다.
class User(BaseUser):
is_activated = models.BooleanField(default=False)
을하고 그것 뿐이다 :
의이 필드가 is_activated
라고 가정 해 봅시다. 이 필드의 기본값은 False
이며, 이는 작성된 사용자가 기본적으로 활성화되지 않음을 의미합니다.
그런 다음이 필드를 관리자 페이지에 추가하고 거기에서 토글 할 수 있습니다.
희망이 있습니다.
고마워요! 따라서 사용자 모델을 확장해야합니다. 시원한. 내 템플릿에서 {% user.is_authenticated %}를 사용합니다. is_activated가 true로 설정되지 않은 모든 계정에서 "user.is_authenticated"가 "false"를 반환하도록하려면 어떻게해야합니까? 또는 "is_activated"도 확인하도록 모든 템플릿을 다시 작성해야합니까? 감사!! – Daggepagge
@Daggepagge is_authenticated를 재정의 할 사용자 정의 권한 클래스를 만들어야합니다. 가장 쉬운 방법은 if 문을 {% if user.is_authenticated and user.is_activated %}로 변경하는 것입니다. –
내가 만들었을 때 cogofly을 만들었 기 때문에 일부 사람들 (소수지만 일부는 할 수 있음)이 "google과 함께 로그인"하고 때로는 "페이스 북으로 로그인"하고 이것은 같은 사람입니다! 따라서이 솔루션을 사용하면 이러한 문제를 피할 수 있습니다. 기억할 수있는 유일한 것 : 모든 소셜 네트워크에 기본 키가 하나만 있습니다. 이메일은입니다.
Like it's written in the documentation이면 User
모델에 대한 OneToOne
링크를 만듭니다. 이에서 나는이 제안 :
의 날짜의 날짜 :
from django.contrib.auth.models import User
class Person(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
is_activated = models.BooleanField(default=False)
소셜 로그인 모델을 만들고 정확하게 사용자가 에 gged :
class SocialLogin(BaseModel):
S_GOOGLE = 1
S_FACEBOOK = 2
TAB_S_LOGIN = {
S_GOOGLE: _("Google"),
S_FACEBOOK: _("Facebook"),
}
logged_in = models.IntegerField(
choices=[(a, b) for a, b in list(TAB_S_LOGIN.items())],
default=S_GOOGLE)
date_first_login = models.DateTimeField(auto_now_add=True,
verbose_name=_('First login'))
date_last_login = models.DateTimeField(auto_now=True,
verbose_name=_('Last login'))
person = models.OneToOneField(Person, on_delete=models.CASCADE)
def logged_in_desc(self):
return SocialLogin.TAB_S_LOGIN[self.logged_in]
def __str__(self):
return '{}/{}'.format(
self.logged_in_desc(),
description if self.description is not None else '?')
내 최고의 조언은 사용자에게 사용자 정의 사용자 모델 (설명서를 참조) [https://docs.djangoproject.com/en/1.11/topics/auth/customizing/]하고있다 다음 (자습서) [https://simpleisbetterthancomplex.com/tutorial/2016/07/22/how-to-extend-django-user-model.html]이 방법에 대해 도움을 줄 수 있습니다. – deaspo
감사합니다! 링크가 깨졌습니다. 오, 나는 그 괄호, 감사를 참조하십시오 – Daggepagge
https://simpleisbetterthancomplex.com/tutorial/2016/07/22/how-to-extend-django-user-model.html – deaspo