Rya*_*len 19 django trailing-slash django-rest-framework
该文件说,你可以设置trailing_slash=False但你怎么能允许两个端点工作,有或没有结尾的斜线?
Rya*_*len 22
您可以覆盖SimpleRouter类的__init__方法:
from rest_framework.routers import SimpleRouter
class OptionalSlashRouter(SimpleRouter):
def __init__(self):
self.trailing_slash = '/?'
super(SimpleRouter, self).__init__()
Run Code Online (Sandbox Code Playgroud)
该?字符将使斜杠成为所有可用路径的可选项.
小智 9
您还可以通过将trailing_slash参数传递给SimpleRouter构造函数来覆盖此设置,如下所示:
from rest_framework import routers
router = routers.SimpleRouter(trailing_slash=False)
Run Code Online (Sandbox Code Playgroud)
如果您使用 DRF 的路由器和视图集,则可以/?在前缀中包含。
from rest_framework import routers
from .views import ClientViewSet
router = routers.SimpleRouter(trailing_slash=False)
router.register(r"clients/?", ClientViewSet)
Run Code Online (Sandbox Code Playgroud)
我发现最简单的方法就是单独设置 URL 来处理可选的尾部斜杠,例如
from django.urls import re_path
urlpatterns = [
re_path('api/end-point/?$', api.endPointView),
...
Run Code Online (Sandbox Code Playgroud)
这不是一个 DRY 解决方案,但每个 URL 只需要额外的两个字符。而且它不涉及覆盖路由器。
| 归档时间: |
|
| 查看次数: |
5278 次 |
| 最近记录: |