在查找时,具有非字母数字字符的请求参数从不匹配

2024-06-26 00:20:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用rest框架根据用户的电子邮件地址检索用户ModelViewSet。当请求中只存在字母数字字符时,一切正常,但是当包含@.和{}等字符时,请求就会失败。在

我试过各种要求,包括:

GET /users/example%40example.com
GET /users/example@example.com

响应返回:

^{pr2}$

与请求中的电子邮件地址完全匹配。在

以下是我目前的看法:

class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer
    lookup_field = 'email'

Tags: 用户com框架restgetexample电子邮件地址
1条回答
网友
1楼 · 发布于 2024-06-26 00:20:18

又是我,我昨天说的是对的,不是@符号,而是引起404错误的.符号。将代码更改为:

class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer
    lookup_field = 'email'
    lookup_value_regex = '[^/]+'

默认的lookup_value_regex是[^/.]+here是文档。 在源代码中可以看到rest_framework/routers.py/SimpleRouter/get_lookup_regex

^{pr2}$

相关问题 更多 >