I.J*_*dze 4 django django-rest-framework drf-yasg
是否可以使应用程序中的每个 URL 都需要标头区域设置参数。我可以实现它以在全局配置或每个视图方法中进行设置吗?如果是,我该怎么做?
小智 5
您没有提供有关视图外观的任何详细信息,因此我假设它是基于函数而不是基于类的,但此解决方案可以轻松在 cbv 上实现。
使标头成为 swagger 的一部分可以通过以下方式实现:
# making a header parameter
from drf_yasg import openapi
header_param = openapi.Parameter('local',openapi.IN_HEADER,description="local header param", type=openapi.IN_HEADER)
# calling it on view
@swagger_auto_schema(manual_parameters=[header_param])
@api_view(['GET', 'PUT', 'POST'])
def test_view(request, pk):
Run Code Online (Sandbox Code Playgroud)
由于您希望每个视图都有它,一种解决方案是创建一个utils文件夹来创建辅助方法。创建一个辅助方法,例如:
# utils.py
from drf_yasg import openapi
def get_header_params(self):
header_param = openapi.Parameter('local',openapi.IN_HEADER,description="local header param", type=openapi.IN_HEADER)
return [header_param]
Run Code Online (Sandbox Code Playgroud)
这样你就可以在每个视图中调用这个方法,例如:
# views.py
from utils.get_header_param
@swagger_auto_schema(manual_parameters=get_header_param())
@api_view(['GET', 'PUT', 'POST'])
def test_view(request, pk):
# your code
@swagger_auto_schema(manual_parameters=get_header_param())
@api_view(['GET', 'PUT', 'POST'])
def test_view_2(request, pk):
# your code
Run Code Online (Sandbox Code Playgroud)
如需进一步帮助,您可以随时查看实际文档:https://drf-yasg.readthedocs.io/en/stable/custom_spec.html#the-swagger-auto-schema-decorator
如果你已经开始这个项目,那么我会建议使用 drf-spectaulous 而不是这个,甚至 yasg 和 django 也推荐它用于未来的项目。
| 归档时间: |
|
| 查看次数: |
1823 次 |
| 最近记录: |