非常快速的問題,那就是如何窩在Django的休息框架的請求的另一個API端點。我有終點A,我做了POST,並且想要在它的序列化器perform_create方法中指出B的另一個請求。這個API端點實際上是用相同的Django應用程序編寫的。如何使DRF請求指向同一Django應用程序
串行的API一個
class ReadingCreate(CreateAPIView): permission_classes = [IsOwnerOrReadOnly] serializer_class = ReadingCreateSerializer def perform_create(self, serializer): #HERE I WANT TO MAKE REQUEST TO POINT B serializer.save(user_profile= UserProfile.objects.get(user=self.request.user))
我所熟悉的庫,例如請求,但我希望有,因爲一個更好的辦法,我還需要發送令牌身份驗證和我像在同一個文件中。這個問題看起來很簡單,但我顯然不知道如何正確地做到這一點。
更新: 爲了解釋更多,「請求」應該找到根據,我把它通過ReadingCreateSerializer書號一本書。但首先我需要找到一本書(Google API),然後將其保存到我的數據庫。這需要完成,因爲書籍模型獨立於UserProfile對象,而Reading不是(具有附加信息)。這就是我的「請求」所做的。
當然,這可能是與從客戶雙鏈請求做,但我不希望這樣。
串行:
class ReadingCreateSerializer(serializers.HyperlinkedModelSerializer): isbn = serializers.CharField(required=True, max_length=20) class Meta: model = Reading fields = ['isbn', 'notes', 'rating', 'start_reading_date', 'end_reading_date']
我試着基礎上,答案是什麼:視野和串行的一部分一部分
def perform_create(self, serializer): self.request.method = 'POST' serializer.save(user_profile=UserProfile.objects.get(user=self.request.user), request=self.request) def save(self, **kwargs): isbn = self.validated_data['isbn'] request = kwargs.get("request", {}) request.data = {'isbn': isbn} post_book(request)
我發現的是,我可以」 t導入視圖(在我的例子post_book)序列化我猜這是不允許的Django。
你爲什麼要提出一個要求不惜一切,而不僅僅是打電話給你想要的方法是什麼?這個請求究竟應該做什麼? –
我嘗試過,但我需要isbn字段。檢查更新。 – alphiii
什麼是這裏的postbook?爲什麼你猜測你不能導入?你試過了嗎?如果是的話錯誤是什麼? – itzMEonTV