0

나는 django를 처음 접했고 개념은 매우 간단합니다. 사용자 지정 모델을 만들었습니다 (사전 정의 된 모델을 확장하지 않으려합니다). 그리고 난 내 로그인 인증하려고이 코드를 사용하여 :django가 내 사용자 정의 모델의 데이터를 찾습니다.

Models.py을 :. (난 그냥 샘플 데이터 여기 준이 내가 사용하는 실제 데이터하지 않습니다 그리고 내 클라이언트는 나 같은 어떤 내장 모델을 사용할 dosent. AbstractBaseUser 등)

from django.db import models 
#from django.contrib.auth.models import User 

class logindata(models.Model): 
    fname= models.CharField(max_length=30) 
    lname = models.CharField(max_length=30) 
    uname = models.CharField(max_length=30) 
    password = models.CharField(max_length = 30) 

Views.py

def auth_view(request): 
username = request.POST.get('username','') 
password = request.POST.get('password','') 
user =auth.authenticate(uname=username, password=password) 
if user is not None:  
    auth.login(request, user) 
    return HttpResponseRedirect('/accounts/loggedin',{'user':user}) 
else: 
    return HttpResponseRedirect('/accounts/invalid') 

def loggedin(request): 
    return render_to_response('loggedin.html', 
           {'name':request.user.uname}) 

내 질문은 매우 간단합니다. 인증 대신 기본 사용자 정의 모델 (logindata)을 보게됩니다. 어떻게해야합니까 ??

+1

왜 클라이언트가 AbstractBaseUser와 같은 기본 모델을 사용하기를 원하십니까? –

+0

나는 클라이언트와 이야기를 해봤는데 왜 그랬는지 모르겠다. 그는 그것을 원한다. .. 그는 당신에게 디자인을 주문했다는 것을 말했고 ... 그리고 이건 장고에 대한 첫 번째 프로젝트이므로 어떻게 진행해야할지 모르겠다. – seshan

+0

@ S.Ramaseshan 그럼 처음부터 프레임 워크를 사용해야하는 이유는 무엇입니까? 처음부터 사용자 정의 프레임 워크를 작성하십시오. 프레임 워크를 사용하고 있다면 이는 코드를 재사용한다는 의미입니다. 클라이언트는 Django 사용에 대한 자신의 결정을 무시합니다. –

답변

1

사용자 정의 사용자 모델을 만들려면 장고는 확장하고 사용할 수있는 django.contrib.auth.models.AbstractBaseUser 모델을 제공합니다. Django 문서에는 그 부분 인 take a look이 있습니다.

Django의 사용자 모델에 만족하고 추가 프로필 정보를 추가하려는 경우 django.contrib.auth.models.AbstractUser의 서브 클래스를 만들고 사용자 정의 프로필 필드를 추가하기 만하면됩니다. 이 클래스는 기본값 User의 전체 구현을 추상 모델로 제공합니다.

확장 할 내용은 code at github을 통해 확인할 수 있습니다.

+0

로그인을 잊어 버리십시오 ... 정의 된 다른 정의를 확인하고 싶습니다 ... 정확히 어떻게 진행할 것인가 ... – seshan

+0

@ S.Ramaseshan 모델 필드 인 경우 양식을 사용하여 유효성을 검사 할 수 있습니다. –

+0

@ S.Ramaseshan이 모델을 사용하기 위해'authenticate()'를 사용하려면 모델은 추상 모델에 정의 된 프로퍼티와 메소드를 필요로하기 때문에 모델은'AbstractBaseUser'와 동일해야합니다. 그냥 건너 뛸 수는 없습니다. –

1

Try defining you custom model using the settings AUTH_USER_MODEL

내가 직접 테스트하지 않았고, 아마도 그것은 장고 BaseUser을 하위 클래스를 필요로하지만 당신은 시도해야합니다. 당신이 장고의 기본 모델을 사용하는 것이 괜찮다는 것을 업데이트 한 후


  • , 나는이 방법은 확실히 작동 할 것이라고 말할 수있다.