如何在 Django URL 中使用点?

0 python django django-rest-framework

我使用以下 URL 模式来访问我的 API。

urlpatterns = [
  url(r'^admin/', admin.site.urls),
  url(r'^api_module/api/1.0/', include(router.urls, namespace='api')),
]
Run Code Online (Sandbox Code Playgroud)

我通过在 Swagger 中发布以下数据来创建 SQL 数据。

{
  "description": "My Test",
  "name": "SK.Test"
}
Run Code Online (Sandbox Code Playgroud)

但是,在通过 GET by Id 方法大肆访问时,我将 id 指定为名称SK.Test,并且收到 api not found 错误。像这样,

" Not Found : /api_module/api/1.0/mytest/SK.Test "
Run Code Online (Sandbox Code Playgroud)

但如果像这样创建,

{
  "description": "My Test",
  "name": "SK_Test"
}
Run Code Online (Sandbox Code Playgroud)

我可以在运行时通过下面的 API 获取详细信息。

/api_module/api/1.0/mytest/SK_Test
Run Code Online (Sandbox Code Playgroud)

我想通过使用点的 id 方法获取详细信息。希望你明白我的问题。有人可以解答我的疑问吗?

Dan*_*man 6

默认路由器专门从它匹配的模式中排除点。如果你想包含它们,你需要lookup_value_regex在你的视图集中定义。

class MyViewset(viewsets.GenericViewSet):
    lookup_value_regex = r"[\w.]+"
Run Code Online (Sandbox Code Playgroud)