首页 > 解决方案 > Django RESTApi 中的 URL 参数

问题描述

提前谢谢你,我是 Django REST 框架的新手。当我使用带有 id 参数的 get() 方法时,它工作正常

下面是 url.py

urlpatterns = [
path('admin/', admin.site.urls),
url(r'api/userList/$', UserList.as_view(), name="userList"),
url(r'^api/userList/(?P<id>\d+)/$', UserDetails.as_view(), name="userDetails")
]

下面是api.py:

class UserDetails(APIView):
    def get(self, request, id):
        model = Users.objects.get(id=id)
        serializer = UsersSerializers(model)
        return Response(serializer.data)

上面的代码很好

当我尝试使用 emailID 获取用户详细信息时,我无法获取详细信息,显示以下错误:

Using the URLconf defined in myProject.urls, Django tried these URL patterns, in this order:
    1. admin/
    2. api/userList/$ [name='userList']
    3. ^api/userList/(?P<emailID>\d+)/$ [name='userDetails']
The current path, api/userList/sannila1527@gmail.com/, didn't match any of these.

下面是api.py:

class UserDetails(APIView):
    def get(self, request, emailID):
        model = Users.objects.get(emailID=emailID)
        serializer = UsersSerializers(model)
        return Response(serializer.data)

你能帮我解决这个问题吗?

标签: djangodjango-rest-frameworkrest

解决方案


尝试将您的 url.py 更改为

urlpatterns = [
path('admin/', admin.site.urls),
url(r'api/userList/$', UserList.as_view(), name="userList"),
url(r'^api/userList/(?P<emailID>\w+|[\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})/$', UserDetails.as_view(), name="userDetails")
]

推荐阅读