带有`james i.的用户名django 路由器不接受亚当斯
username with `james i. adams` not accepted with django routers
我已经为 user
型号注册了路由器,该型号的视图集 lookup_url 为 username
。
用户名 james adams
已被路由器接受,但出现以下错误 james i. adams
django.urls.exceptions.NoReverseMatch: Reverse for 'user-detail' with keyword arguments '{'username': 'james i. adam', 'version': 'v1'}' not found. 4 pattern(s) tried: ['(?P<version>(v4))/users/(?P<username>[^/.]+)/?\.(?P<format>[a-z0-9]+)/?$', '(?P<version>(v4))/users/(?P<username>[^/.]+)/?$', '(?P<version>(v1))/users/(?P<username>[^/.]+)/?\.(?P<format>[a-z0-9]+)/?$', '(?P<version>(v1))/users/(?P<username>[^/.]+)/?$']
有人可以指导我吗,我怎样才能允许这样的用户名用于 url 已注册路由器的模式?
提前致谢
如您所见,URL values excludes .
的默认正则表达式:
/users/(?P<username>[^/.]+)/
^
您将不得不更改该正则表达式;如果您使用的是视图集,那就很简单:
class UserViewSet(ModelViewSet):
lookup_value_regex = '[^/]+'
我已经为 user
型号注册了路由器,该型号的视图集 lookup_url 为 username
。
用户名 james adams
已被路由器接受,但出现以下错误 james i. adams
django.urls.exceptions.NoReverseMatch: Reverse for 'user-detail' with keyword arguments '{'username': 'james i. adam', 'version': 'v1'}' not found. 4 pattern(s) tried: ['(?P<version>(v4))/users/(?P<username>[^/.]+)/?\.(?P<format>[a-z0-9]+)/?$', '(?P<version>(v4))/users/(?P<username>[^/.]+)/?$', '(?P<version>(v1))/users/(?P<username>[^/.]+)/?\.(?P<format>[a-z0-9]+)/?$', '(?P<version>(v1))/users/(?P<username>[^/.]+)/?$']
有人可以指导我吗,我怎样才能允许这样的用户名用于 url 已注册路由器的模式?
提前致谢
如您所见,URL values excludes .
的默认正则表达式:
/users/(?P<username>[^/.]+)/
^
您将不得不更改该正则表达式;如果您使用的是视图集,那就很简单:
class UserViewSet(ModelViewSet):
lookup_value_regex = '[^/]+'