我使用與休息框架Django和我嘗試測試POST現有的對象,但我不斷收到405我的視圖集中看起來是這樣的:Django的休息後返回405錯誤代碼
class Agents(viewsets.ModelViewSet):
serializer_class = serializer.AgentSerializer
model = serializer_class.Meta.model
....
,並在網址:
router = routers.SimpleRouter()
router.register(r'rest/agents', api_views.Agents, "Agent")
...
urlpatterns += router.urls
我所說的POST請求從APITestCase類(靜態測試)中,我的POST請求是這樣的:
response = self.client.post(url, {'available': True, 'online':True}, format='json')
和打印網址顯示「/ chat/rest/agents/1910_1567 /」,而1910_1567是現有代理的有效標識(我在創建過程中創建代理並使用其ID)。
我已經看到關於休息後獲得405的其他問題,但所有的解決方案都與網址有關,在我的情況下,網址是正確的。我甚至在測試之外運行設置,並通過瀏覽器訪問該URL以獲取對象和對象的確存在。但是當我嘗試發佈到它 - 405。
任何想法?
謝謝!
PS我覺得它很顯而易見的,但是當我重寫update()函數並添加打印時,打印永遠不會被調用,例如,我得到的不是更新的實現,而是之前的版本。真的看起來像網址相關,但我驗證了網址和它的確定:/ –
是否應該在後面的斜槓?如果你設置了'router = SimpleRouter(trailing_slash = False)'? – Railslide
@Railslide發佈網址通常以斜線結尾,但我確實嘗試了您的建議並得到了相同的結果。 –