2016-09-15 37 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

相關問題