0

我已经为user模型注册了路由器,它的 viewset 的 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 模式?

提前致谢

4

1 回答 1

2

如您所见,URL 值的默认正则表达式不包括.

/users/(?P<username>[^/.]+)/
                       ^

您将不得不更改该正则表达式;如果您使用的是视图集,那很简单:

class UserViewSet(ModelViewSet):
    lookup_value_regex = '[^/]+'
于 2021-12-15T08:15:37.867 回答