문제

로그인이없는 사용자의 서브 세트를 만들고 싶습니다. 기본적으로 그 사람과 관련된 전체가 날려서 사진에 사진 작가 필드를 추가하는 방법으로 실제로 사이트에 로그인하지 마십시오). 경고는 나중에 계정을 가능하게 할 수 있다는 것입니다.

따라서 질문이 사용자 테이블을 사용자profile으로 실제로 확장하지 않고 사용자 테이블과 연결되는 "사람"테이블을 설정하는 가장 좋은 방법이된다고 생각합니다.

도움이 되었습니까?

해결책

유저 프로필 (반환대로 django.contrib.auth.models.User.get_profile) 사용자 테이블을 확장하지 않습니다 - 당신이 지정한 모델은 AUTH_PROFILE_MODULE 설정은 단지 a ForeignKey 에게 User. get_profile 그리고 설정은 실제로 특정 모델의 인스턴스에 액세스하기위한 편의 API 일뿐입니다. ForeignKey 구체적으로 User 사례.

따라서 한 가지 옵션은 ForeignKey 에게 User 할 수 있습니다 null 그리고 당신을 연관시킵니다 Photo 이 프로파일 모델 대신 모델이 있습니다 User 모델. 이를 통해 존재하지 않는 사용자를위한 프로필을 만들고 나중에 등록 된 사용자를 프로필에 첨부 할 수 있습니다.

다른 팁

로그인 할 수없는 사용자? 방금 그들에게 완전히 무작위 비밀번호를 주었다.

import random
user.set_password( str(random.random()) )

그들은 결코 로그온 할 수 없습니다.

자신의 인증 루틴을 제공하면 원하는 것을 확인하거나 확인하지 않을 수 있습니다. 이를 수행하므로 일반 사용자 이름에 실패하면 이메일/비밀번호를 입력 할 수도 있습니다 (아래에서 보여주는 것은 아니지만).

settings.py에서 :

AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend',
    'userprofile.my_authenticate.MyLoginBackend', # if they fail the normal test
 )

userprofile/my_authenticate.py :

from django.contrib.auth.backends import ModelBackend
from django.contrib.auth.models import User

class MyLoginBackend(ModelBackend):
    """Return User record if username + (some test) is valid.
       Return None if no match.
    """

    def authenticate(self, username=None, password=None, request=None):
        try:
            user = User.objects.get(username=username)
            # plus any other test of User/UserProfile, etc.
            return user # indicates success
        except User.DoesNotExist:
            return None
    # authenticate
# class MyLoginBackend

문서에서 장고 인증, 사용자 모델을 사용하려면 사용자 이름과 비밀번호를 가지고 있어야한다면 "익명 계정"이 없습니다. 기본 비밀번호로 계정을 작성한 다음 사람들이 "실제"계정 (비밀번호 자체를 설정하여)을 활성화 할 수있는 기회를 제공 할 수 있다고 생각합니다.

사용자 테이블에 묶는 "사람"테이블을 설정하려면 외국 키 필드를 사용하면됩니다 (실제로는 추천 방법 상속이 아닌 사용자 모델에 추가 정보 추가)

사용 a 사용자와 링크하는 외국 키 필드가있는 모델 익명 액세스가 필요하기 때문에 원하는대로 작동하지 않을 수 있습니다. 그것이 작동하는지 확실하지 않지만 외국 키를 가지고 있으면 어떻게되는지 시도 할 수 있습니다. 익명 서사 (누구의 ID는 항상 없다!) 대신.

당신이 그것을 시도한다면, 당신의 결과를 여기에 게시하면, 나는 궁금 할 것입니다.

django.contrib.auth.models.user는 기본 인증 백엔드 (데이터베이스 기반)를 사용하기위한 목적으로 만 존재합니다. 자신의 백엔드를 작성하면 유지하면서 계정을 비밀번호로 만들 수 있습니다. 정상 비밀번호로 계정. Django 문서는 다음과 같습니다 이것에 대한 장.

또 다른 업베트 인신의 대답: a를 통해 이것을 처리하십시오 UserProfile. 제임스 베넷 a 훌륭한 기사 확장에 대해 django.contrib.auth.models.User. 그는 몇 가지 방법을 걷고, 장단점을 설명하고 UserProfile 이상적인 방법.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top