2016-08-12 25 views
0

私はDjango-Rest-Frameworkでユーザー登録を作成しようとしています。それはトークンを求めているDjango-RESTフレームワークトークンの登録

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

Here's a screen capture.

:私は私のURLに行くときしかし、私はこのメッセージが表示されますか?私はユーザーを登録しようとしているので、この時点では必要ない/必要がないはずです。

マインドあなたは、私はちょうど私のブラウザを使用していますし、ちょうど私が、私は角度で遊んとAPIを要求していないよ

127.0.0.1:8000/register

に行きますちょうど私が得るものを見るために私のブラウザに/登録しました。私はフォームや何かを見ることを期待していた。正常に動作していて、私は間違った方法でアクセスしましたか?

は、ここに私のmodels.pyだ

@receiver(post_save, sender=settings.AUTH_USER_MODEL) 
def create_auth_token(sender, instance=None, created=False, **kwargs): 
    if created: 
     Token.objects.create(user=instance) 

class CustomUser(AbstractBaseUser, PermissionsMixin): 
    email = models.EmailField('email address', unique=True, db_index=True) 
    password1 = models.CharField(max_length=50) 
    username = models.CharField('username', max_length=50, unique=True, db_index=True) 
    image = models.FileField(upload_to='photos', null=True, blank=True) 
    joined = models.DateTimeField(auto_now_add=True) 
    is_active = models.BooleanField(default=True) 
    is_admin = models.BooleanField(default=False) 
    date_joined = models.DateTimeField(_('date joined'), default=timezone.now) 
    friends = [] 

    USERNAME_FIELD = 'username' 
    REQUIRED_FIELDS = [] 

    objects = CustomUserManager() 

    def __unicode__(self): 
    return self.username 

    class Meta: 
     unique_together = (('username', 'password1'),) 

私のviews.py

@api_view(['POST']) 
def create_auth(request): 
    serialized = CustomUserSerializer(data=request.DATA) 
    if serialized.is_valid(): 
     CustomUser.objects.create_user(
      serialized.init_data['email'], 
      serialized.init_data['username'], 
      serialized.init_data['password1'] 
     ) 
     return Response(serialized.data, status=HTTP_201_CREATED) 
    else: 
     return Response(serialized._errors, status=HTTP_400_BAD_REQUEST) 

urls.py

router = DefaultRouter() 
router.register(r'friends', FriendViewSet) 
router.register(r'posts', PostViewSet, 'Post') 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^', include(router.urls)), 
    url(r'^users/$', UserView.as_view()), 
    url(r'^add_friend/$', add_friend), 
    url(r'^register', create_auth), # This is the url I'm trying to access. 
    url(r'^api-token-auth/$', ObtainAuthToken.as_view()), 
    url(r'^auth/', include('rest_framework.urls', namespace='rest_framework')), 
    url(r'^logout/$', Logout.as_view()), 

] 

EDIT 1 settings.py

REST_FRAMEWORK = { 
    'DEFAULT_AUTHENTICATION_CLASSES': (
     'rest_framework.authentication.TokenAuthentication', 
     'rest_framework.authentication.SessionAuthentication', 
    ), 
    'DEFAULT_PERMISSION_CLASSES': (
     'rest_framework.permissions.IsAuthenticated', 
    ), 
} 
+0

は、あなたの設定ファイルから、あなたの 'REST_FRAMEWORK'を貼り付けます。 – itzMEonTV

+0

@itzmeontv私はそれを追加しました。 – ngx311

答えて

1

マイrecomendation

from authentication.permissions import IsNotAuthenticated 


@api_view(['POST']) 
@permission_classes((IsNotAuthenticated,)) 
def create_auth(request): 
    serialized = CustomUserSerializer(data=request.DATA) 
    if serialized.is_valid(): 
     CustomUser.objects.create_user(
      serialized.init_data['email'], 
      serialized.init_data['username'], 
      serialized.init_data['password1'] 
     ) 
     return Response(serialized.data, status=HTTP_201_CREATED) 
    else: 
     return Response(serialized._errors, status=HTTP_400_BAD_REQUEST) 

ビューにIsNotAuthenticated沿っpermission_classesデコレータを追加しよう:ベース・クラスビューで作業

+0

まだHTTP 405エラーが発生しています。一番上に 'GET register /'と書かれています。これは 'POST register /'と言うべきでしょうか?今はatleastですが、前にはなかったPOSTボタン付きのメディアタイプとコンテンツボックスがあります。それは私が見るはずのものですか?あなたのページにGETビューを実装する必要があるので、[スクリーンキャプチャはこちら](http://imgur.com/a/CjJil) – ngx311

+1

@ ngx311あなたはPOSTだけを実装しています。 – levi

+0

大丈夫です。私はこれのハングを取得しています。これは、適切なAPIのように見え始めています。私はまだ 'HTTP 400 BAD REQUEST' [http://imgur.com/vGr9apx](http://imgur.com/vGr9apx)を得ています。私は気にしない、それはまだ正しく動作するのだろうか?私は「HTTP 200」を持っている必要はないと思います。 – ngx311

関連する問題