Erez
Erez

Reputation: 1953

doing POST on Django Rest Framework with viewsets return "405 - METHOD POST NOT ALLOWED"

I'm trying to create a HiScore Module for my IOS Apps.

I'm stuck on the POST (probably will have the same issue with the PUT, but not sure) part, I'm getting 405 in Postman. LIST AND DETAILS are working great, so there is no problem with the models, serialisers or views, just something I'm guessing with adding permissions somewhere

views

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

Upvotes: 1

Views: 2228

Answers (1)

zengr
zengr

Reputation: 38899

I think you are missing as_view in view according to documentation. Try this:

In views:

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

And in urls:

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/

Upvotes: 1

Related Questions