在具有视图集的Django Rest框架上执行POST会返回"405-未允许方法发布"; [英] doing POST on Django Rest Framework with viewsets return "405 - METHOD POST NOT ALLOWED"

查看:48
本文介绍了在具有视图集的Django Rest框架上执行POST会返回"405-未允许方法发布";的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试为我的IOS应用创建一个HiScore模块.

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

我卡在POST上(可能与PUT会有相同的问题,但不确定),我在Postman中得到405.列表和详细信息运行良好,因此模型,序列化程序或视图没有问题,这只是我猜测的在某处添加权限的问题

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

观看次数

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

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

推荐答案

我认为您根据

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

在视图中:

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

并在网址中:

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/

这篇关于在具有视图集的Django Rest框架上执行POST会返回"405-未允许方法发布";的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆