You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Redoc页面启用「Try it」功能?基于Django REST Framework

DRF + drf_yasg实现Redoc带「Try it」功能的解决方案

drf_yasg默认集成的原生Redoc本身不带「Try it」交互功能,你看到的示例是Redoc增强版(Redocly)提供的特性。要在现有DRF项目中实现该功能,可参考以下几种方案:

方案1:替换Redoc CDN为Redocly增强版

drf_yasg支持自定义Redoc的加载源,直接替换为带Try it功能的版本即可:

  1. 修改项目settings.py中的SWAGGER_SETTINGS:
SWAGGER_SETTINGS = {
    # 保留原有其他配置
    'REDOC_CONFIG': {
        'cdn_url': 'https://cdn.redoc.ly/redoc/latest/bundles/redoc.standalone.js',
        'tryItOutEnabled': True,  # 启用Try it功能
        'url': '/swagger.json',  # 你的OpenAPI schema地址
    }
}
  1. 确保drf_yasg生成的OpenAPI schema包含完整的请求/响应定义(默认已生成,自定义视图需检查配置)。

方案2:自定义Redoc模板

如果需要更灵活的定制,可以替换drf_yasg的默认Redoc模板:

  1. 复制drf_yasg默认模板drf_yasg/templates/drf_yasg/redoc.html到你的项目模板目录(比如your_app/templates/custom_redoc.html)。
  2. 修改模板中的Redoc加载脚本:
<script src="https://cdn.redoc.ly/redoc/latest/bundles/redoc.standalone.js"></script>
<script>
  Redoc.init(
    "{{ schema_url }}",
    { tryItOutEnabled: true },
    document.getElementById("redoc-container")
  );
</script>
  1. 在settings.py中指定自定义模板路径:
SWAGGER_SETTINGS = {
    'REDOC_TEMPLATE': 'your_app/custom_redoc.html',
    # 其他配置...
}

方案3:使用第三方DRF Redoc集成包

部分第三方包已内置Try it功能,比如django-redoc:

  1. 安装依赖:
pip install django-redoc
  1. 在settings.py的INSTALLED_APPS中添加:
INSTALLED_APPS = [
    # 其他应用
    'redoc',
]
  1. 配置URL路由:
from django.urls import path
from redoc.views import RedocView

urlpatterns = [
    # 其他路由
    path('redoc/', RedocView.as_view(schema_url='/swagger.json'), name='redoc'),
]
  1. 参考该包文档配置Try it相关参数(默认可能已启用)。

关键注意事项

  • 跨域问题:如果前端与后端域名不同,需配置CORS,可通过django-cors-headers包实现。
  • Schema完整性:Try it功能依赖完整的OpenAPI定义,确保drf_yasg生成的schema包含operationId、请求体、参数等必要信息。

内容的提问来源于stack exchange,提问作者children1987

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 21:57:37