因此,我在 DRF 應用程式上有一個基于函式的視圖,如下所示:
from rest_framework.decorators import api_view, permission_classes
from rest_framework.response import Response
from rest_framework.permissions import AllowAny
from rest_framework import status
def passcode_generator(callsign: str) -> int:
return 0 # Placeholder
@api_view(["POST"])
@permission_classes([AllowAny])
def get_passcode(request):
callsign = request.data.get("callsign", None)
if callsign is None:
raise Response(
{"error": "Missing callsign"}, status=status.HTTP_400_BAD_REQUEST
)
return Response({"passcode": passcode_generator(callsign)})
顯然,"callsign"是唯一預期的引數,并且是強制性的。這"passcode"是回應中唯一的欄位。但 DRF 不知道這一點。
這意味著 DRF 的 Web 可瀏覽 API 頁面無法顯示 HTML 表單選項卡,并且意味著檔案生成器無法正確記錄它:

所以問題是,如何記錄這個基于函式的視圖?
謝謝!
uj5u.com熱心網友回復:
我不確定這可以用香草 DRF 來完成。據我所知,現在支持 Django 的最佳模式生成器是drf-spectacular. 因此,如果您正在使用drf-spectacular,則必須以這種方式記錄它:
@extend_schema(
parameters=[
OpenApiParameter(name='callsign', description='<description>',
required=True, type=str),
],
description='More descriptive text'
)
def get_passcode(request):
callsign = request.data.get("callsign", None)
# ...
根據測驗,可以通過這種方式記錄回應:
@extend_schema_view(
create=extend_schema(description='creation description', responses={
201: OpenApiResponse(response=int, description='creation with int response.'),
222: OpenApiResponse(description='creation with no response.'),
223: None,
224: int,
}),
list=extend_schema(responses=OpenApiResponse(
response=OpenApiTypes.INT,
description='a list that actually returns numbers',
examples=[OpenApiExample('One', 1), OpenApiExample('Two', 2)],
)),
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/400914.html
上一篇:Django評論表
下一篇:django.core.exceptions.ImproperlyConfigured:設定DATABASE_URL環境變數
