我正在尝试使用retrieveAPIView来查找基于"电子邮件"的详细信息。但它的抛出错误:
Not Found: /apii/list/
[27/May/2021 19:53:28] "GET /apii/list/?email=%22xxx.zzz@gmail.com%22 HTTP/1.1" 404 2801
项目级urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('apii/', include('AUTHENTICATION.urls')),
]
应用程序URL.py
urlpatterns = [
path('register/', UserRegisterView.as_view(), name='register'),
path('login/', loginAPIView.as_view(), name='login'),
re_path(r'^list/(?P<email>[w-]+)/$', IndividualUserDetails.as_view(), name='list'),
]
views.py
class IndividualUserDetails(RetrieveAPIView):
queryset = NewEmployeeProfile.objects.all()
permission_classes = [AllowAny]
serializer_class = UserSerializer
lookup_field = 'email'
我在poster中输入的url是http://127.0.0.1:8000/apii/list/?email="xxx.zzz@gmail.com"
我假设我调用网址的方式可能是错误的。
请提出建议。谢谢
您的url模式如下所示:
re_path(r'^list/(?P<email>[w-]+)/$', IndividualUserDetails.as_view(), name='list'),
然而,您试图将电子邮件作为GET参数(?email="xxx.zzz@gmail.com"
(传递,而不是作为url本身的一部分。您需要将电子邮件作为url本身的一部分进行传递,因此您的url应该是:
http://127.0.0.1:8000/apii/list/xxx.zzz@gmail.com/
此外,您的模式将无法匹配您的电子邮件,因为[w-]+
与.
、@
等不匹配。相反,只需使用path
和str
url转换器:
path(r'list/<str:email>/', IndividualUserDetails.as_view(), name='list'),