2014-03-28 100 views
2

所以我試圖提供用戶註冊的應用程序中使用Django休息框架。我現在面臨的問題是,DRF基本上要求的請求被認證django rest框架用戶註冊

這被設置:

DEFAULT_AUTHENTICATION = { 
    'DEFAULT_AUTHENTICATION_CLASSES': (
    'rest_framework.authentication.OAuth2Authentication', 
    ), 
} 

這是視圖:

@permission_classes((AllowAny,)) 
@csrf_exempt 
@api_view(['POST']) 
def create_auth(request, format=None): 
    data = JSONParser().parse(request) 
    serialized = UserSerializer(data=data) 

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

     user.save() 

     serialized_user = UserSerializer(user) 
     return Response(serialized_user.data, status=status.HTTP_201_CREATED, headers={"Access-Control-Allow-Origin": "http://127.0.0.1:8000/"}) 
    else: 
     return Response(serialized._errors, status=status.HTTP_400_BAD_REQUEST, headers={"Access-Control-Allow-Origin": "http://127.0.0.1:8000/"}) 

這是測試:

def test_user_register(self): 
    user_data = {'username': 'testusername', 
       'email': "[email protected]", 
       'groups': [1], 
       'password': 'testpassword', 
       } 

    resp = self.client.post("/auth/register", json.dumps(user_data), content_type="application/json") 
    print resp.content 

    self.assertEquals(resp.status_code, 200) 
    self.assertContains(resp, user_data["username"], 1, 201) 

並且這是錯誤:

{"detail": "Authentication credentials were not provided."} 

我在做什麼錯?裝飾者是否應該允許未經過身份驗證的請求? 甚至更​​好:哪一種是通過REST API註冊用戶的正確方式?

感謝, 阿迪

+0

http://stackoverflow.com/q/30085996/764592 – Yeo

回答

3

檢查文檔here,它說:

...REST framework provides a set of additional decorators which can be added to your views. These must come after (below) the @api_view decorator.

+0

謝謝。我不能相信我錯過了那個...... 總之......沒有其他更好的方式提供用戶註冊,而不是添加單獨的視圖? – adi