2014-04-16 6 views
1

내 앱을 등록 할보기를 작성했지만 실행하려고하면 오류가 발생합니다 :Django에서 사용자를 만들 때 다음과 같은 오류가 발생합니다. 'User'속성에 'objects'속성이 없습니다.

from django.contrib.auth import authenticate, login, logout 
from django.contrib.auth.models import User 
from django.contrib.auth.decorators import login_required 
from django.core import serializers 

from rest_framework.views import APIView 
from rest_framework.response import Response 

from users.serializers import * 

class Register(APIView): 

    def post(self, request): 
     serialized = UserSerializer(data=request.DATA) 
     if serialized.is_valid(): 
      user = User.objects.create_user(serialized.init_data['email'], serialized.init_data['username'], serialized.init_data['password']) 
      return Response(serialized.data, status=status.HTTP_201_CREATED) 
     else: 
      return Response(serialized._errors, status=status.HTTP_400_BAD_REQUEST) 

편집 :은 다음과 내 user.serializers 모듈이 보이는 :

from django.forms import widgets 
from rest_framework import serializers 
from django.contrib.auth import get_user_model 

class UserSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = get_user_model() 
     fields = ('date_joined','email','first_name','id','last_login','last_name','username') 
다음과 같이
type object 'User' has no attribute 'objects' 

내 코드 보인다

+0

장고 셸을 사용하여 사용자를 만들 수 있습니까? 'django.contrib.auth.models 가져 오기 사용자 ' 'user = User.objects.create_user ('john', '[email protected]', 'johnpassword') ' – fasouto

+0

문제없이이 작업을 수행 할 수 있습니다. 실제보기에서 작동하지 않는 이유를 이해할 수 없습니다. –

답변

0

좋아요, 문제는 해결되었지만 환경 설정에 문제가있는 것 같습니다. 그럼에도 불구하고 나는 그 길을 발견했다. 나는 분명히 또한 수입했다

user = get_user_model().objects.create_user(serialized.init_data['username'], email=serialized.init_data['email'], password=serialized.init_data['password']) 

:

user = User.objects.create_user(serialized.init_data['email'], serialized.init_data['username'], serialized.init_data['password']) 

에 : 나는 다음과 같은 라인을 대체 내가 get_user_model를 사용하는 데 필요한 이유가 파악되지 않은

from django.contrib.auth import get_user_model 

() 단지 내 User 객체를 직접 사용할 수있는 대신에 내 문제가 해결되었습니다.

0

serializer 모듈에 User라는 클래스가 있습니까? from users.serializers import *을 수행하면 해당 모듈의 모든 내용을 현재 네임 스페이스에 가져와 이미 가져온 이름을 무시합니다. 이 구문은 대개 그 이유에 대해 나쁜 생각입니다.

+0

users.serializers 모듈로 질문을 편집했습니다. 보시다시피, 거기에 User 클래스가 없습니다. –