2016-09-15 14 views
0

IOSアプリケーション用のHiScoreモジュールを作成しようとしています。Django RestフレームワークでPOSTを実行するビューセットを返す "405 - メソッドPOSTが許可されていません"

私はPOST(おそらくPUTと同じ問題がありますが、わからない部分)に詰まっています。私は郵便配達員に405を手に入れています。 一覧と詳細が素晴らしい働いているので、モデル、serialisersまたはビューに問題、私はどこか

ビュー

class UserViewSet(viewsets.ModelViewSet): 
    queryset = User.objects.all() 
    serializer_class = UserSerializer 

class GameViewSet(viewsets.ModelViewSet): 
    queryset = HiScore.objects.all() 
    serializer_class = GameSerializer 

class GameTypeViewSet(viewsets.ModelViewSet): 
    queryset = HiScore.objects.all() 
    serializer_class = GameTypeSerializer 

class GameLevelViewSet(viewsets.ModelViewSet): 
    queryset = HiScore.objects.all() 
    serializer_class = GameLevelSerializer 

class HiScoreViewSet(viewsets.ModelViewSet): 
    permission_classes = [AllowAny,] 
    queryset = HiScore.objects.all() 
    serializer_class = HiScoreSerializer 

serialisers.py

class HiScoreSerializer(ModelSerializer): 
image = SerializerMethodField() 
class Meta: 
    model = HiScore 
    fields = ("user", "game", "gameType", "gameLevel", "points", "image") 

def get_image(self, obj): 
    try: 
     profile = UserProfile.objects.get(user=obj.user) 
     return profile.image.url 
    except: 
     return None 
追加する権限を推測しているだけで何かがありません

私はあなたがいると思うurls.py

router = DefaultRouter() 
router.register(prefix='hiscores', viewset=HiScoreViewSet) 

urlpatterns = router.urls 

答えて

1

表示がdocumentationによるas_viewの見逃し。ビューで

hiscores = HiScoreViewSet.as_view({ 
    'get': 'list', 
    'post': 'create' 
}) 

とURLで:このお試しください

from rest_framework.urlpatterns import format_suffix_patterns 
urlpatterns = format_suffix_patterns([ 
    url(r'^hiscores/$', hiscores, name='hiscores') 
]) 

http://www.django-rest-framework.org/api-guide/viewsets/

+0

をしかし、あなたの 'HiScoreViewSet'は例と同じではありません。あなたはデコレータ '@detail_route(methods = ['post'])を使用していません。 – zengr

+0

私の友人は申し訳ありませんが、質問をする前に記事を読んだことがあります。 RESTフレームワークに含まれているデフォルトのルータは、以下に示すように、標準のcreate/retrieve/update/destroyスタイル操作セットのルートを提供します。つまり、CRUDメソッドをオーバーライドしないと自動的にそれらを取得します。あなたがブラウザに行ってURLの最後にcreateを書くと、あなたは作成URLを取得していることがわかります...もう一度、権限の問題または認証の問題です。ありがとう – Erez

+0

それは間違いなく認証の問題ではありません、そうでなければあなたは '401 UNAUTHORIZED'を得ているはずです。 – zengr

関連する問題