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

如何移除Django根URL API末尾的斜杠 实现无斜杠地址正常访问

配置调整步骤

你只需要修改两处配置即可实现需求:

1. 修改DRF路由器参数

DRF的DefaultRouter默认生成带末尾斜杠的路由,实例化时添加trailing_slash=False参数即可生成不带斜杠的路由,修改对应代码行:

# 原来的代码
# router = routers.DefaultRouter()
# 修改为
router = routers.DefaultRouter(trailing_slash=False)

2. 关闭Django自动补全斜杠的全局配置

Django默认开启APPEND_SLASH配置,会自动将不带末尾斜杠的请求301重定向到带斜杠的地址,你需要在项目的settings.py文件中添加如下配置关闭该逻辑:

APPEND_SLASH = False
修改后的完整urls.py示例
import os

from django.contrib import admin
from django.urls import path, include
from rest_framework import routers
from rest_framework.schemas import get_schema_view
from rest_framework_swagger.renderers import SwaggerUIRenderer, OpenAPIRenderer
from groups import views as group_views

API_VERSION = os.getenv('API_VERSION')
API_ROOT = f"api/{API_VERSION}/"

# 仅修改了这一行,添加trailing_slash=False参数
router = routers.DefaultRouter(trailing_slash=False)
router.register('groups', group_views.GroupViewSet)

schema_view = get_schema_view(
  title='next_blog',
  renderer_classes=[OpenAPIRenderer, SwaggerUIRenderer])
urlpatterns = [
  path('admin', admin.site.urls),
  path('api_auth', include(
    'rest_framework.urls', namespace='rest_framework')),
  path('docs', schema_view, name='docs'),
  path(API_ROOT, include(router.urls)),
]
注意事项

关闭APPEND_SLASH后,所有自定义的path路由都不会自动补全末尾斜杠,比如你现有配置中的/admin、/docs路径,之后只能通过不带斜杠的地址访问,带斜杠的地址会返回404。如果需要同时支持两种格式的地址,可以针对每个路径分别编写两条匹配规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:24:07