在我的代碼中,我有一個用戶的視圖。 我想要只允許讀取操作(/用戶/ 42和/用戶/)ReadOnlyModelViewSet做得很好。django rest框架 - 使用detail_route和detail_list
另外,我想有一個/用戶/註冊 URL,我可以POST,以便註冊一個新用戶。
class UserViewSet(viewsets.ReadOnlyModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
@list_route(methods=['post'])
def register(request):
serializer = UserSerializer(data=request.DATA)
if serializer.is_valid():
user = User.objects.create_user(
username = serializer.init_data['username'],
password = serializer.init_data['password'],
)
return Response(serializer.data, status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
幾個問題:
請問這該是這樣做的正確方法?
是否有一個具體簽名一種方法,如果我把它放在一個list_route或detail_route裝飾?因爲在detail_route例子其始終方法相同的簽名:METHOD_NAME(個體經營,要求,PK =無):
的感謝!
感謝您的回答,我會來看看。一個問題 - ModelviewSet允許GET,POST,PATCH,GET和DELETE。當你重寫更新方法並引發一個NotAllowed時 - 只對POST和PATCH有用嗎?還是爲DELETE?我的意思是它涵蓋除GET和POST之外的所有方法來創建?只是想確保我只允許使用理想的方法 –
你是絕對正確的。我修改了代碼以明確使用正確的mixin,而不是將修補代碼修補出來。 –