2016-09-15 77 views
0

我正在尝试为我的IOS应用程序创建HiScore模块。使用viewsets在Django Rest框架上执行POST返回“405 - 不允许的方法POST”

我卡在POST(可能会有与PUT相同的问题,但不知道)部分,我在邮递员405。 列表和详细信息正在极大,所以不存在问题的机型,串行器或意见,只是一些我与添加权限猜测某处

意见

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' 
}) 

而且在网址:

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的末尾创建,你会看到你正在得到一个创建网址......这是一个权限问题或认证问题,而不是一个视图问题,因为我明白了..谢谢 – Erez

+0

它绝对不是一个身份验证问题,否则你应该得到'401 UNAUTHORIZED'。 – zengr

相关问题