Django NoReverseMatch at/api/users/请求重置电子邮件/
这不是重复的问题,我已经提到了旧问题,但没有找到答案。我使用的是Django==1.10.5 我正在尝试使用Django rest框架实现rest密码功能。但是我的错误率越来越低Django NoReverseMatch at/api/users/请求重置电子邮件/,django,python-2.7,django-rest-framework,Django,Python 2.7,Django Rest Framework,这不是重复的问题,我已经提到了旧问题,但没有找到答案。我使用的是Django==1.10.5 我正在尝试使用Django rest框架实现rest密码功能。但是我的错误率越来越低 Reverse for 'api/password_reset_confirm2' with arguments '('uidb64', 'token')' and keyword arguments '{}' not found. 0 pattern(s) tried: [] 如果查看patters se
Reverse for 'api/password_reset_confirm2' with arguments '('uidb64', 'token')'
and keyword arguments '{}' not found. 0 pattern(s) tried: []
如果查看patters searched错误显示,则无法读取url.py中配置的任何url patters。这就是担心
重置密码类别:
class RequestPasswordResetEmailAPIView(GenericAPIView):
serializer_class = ResetPasswordEmailSerializer
def post(self,request):
serializer = self.serializer_class(data=request.data)
email = request.data.get('email','')
if User.objects.filter(email=email).exists():
user = User.objects.get(email=email)
uidb64 = urlsafe_base64_encode(smart_bytes(user.id))
token = PasswordResetTokenGenerator().make_token(user)
current_site = get_current_site(
request=request
).domain
relativeLink = reverse('api/password_reset_confirm2'
,args={'uidb64':uidb64, 'token': token}
)
absurl = 'http://'+current_site+relativeLink
email_body = 'Hello'+absurl
data = {'email_body': email_body, 'to_email': user.email, 'email_subject': 'Reset password link' }
Util.send_email(data)
return Response('Success')
身份验证应用程序的My url.py如下所示
urlpatterns = [
url(r'^user/?$', UserRetrieveUpdateAPIView.as_view()),
url(r'^users/?$', RegistrationAPIView.as_view()),
url(r'^users/login/?$', LoginAPIView.as_view()),
url(r'^users/request-reset-email/',RequestPasswordResetEmailAPIView.as_view(), name='users/request-reset-email'),
url(r'^users/password-reset-confirm/(?P<uidb64>[-\w]+)/(?P<token>[-\w]+)/$', PasswordResetTokenCheckAPIView.as_view(), name='password_reset_confirm2'),
# path('password-reset/<uidb64>/<token>/', RequestPasswordResetEmailAPIView.as_view(), name='api/password_reset_confirm2'),
]
url(r'^api/', include('apps.authentication.urls', namespace='authentication')),
请各位指教,,
谢谢您在
反向
功能中的URL引用可能与另一个应用中的URL
冲突。
而不是:
relativeLink = reverse('api/password_reset_confirm2'
,args={'uidb64':uidb64, 'token': token}
)
试试这个:
relativeLink = reverse('password_reset_confirm2'
,args={'uidb64':uidb64, 'token': token}
)
现在,您正在按名称引用URL。尝试使用
relativeLink = reverse(
'authentication:api/password_reset_confirm2',
args={'uidb64':uidb64, 'token': token}
)
我想我看到了一个打字错误
relativeLink=reverse('api/password\u reset\u confirm2',…)
。您的Url在密码重置确认后没有2
。也许这就是问题所在?通过删除和添加我尝试过的2个,我怀疑它可能与内置url名称冲突,所以在最后添加了2个。但还是不行哦好的。我这么说是因为很多堆栈溢出问题都是由一个简单的打字错误引起的。我猜您的路径被注释为#path('password-reset//')
尝试删除#
我没有使用paht,而是使用urlpatters出现了相同的错误,与带有参数的'password\u reset\u confirm2'('uidb64','token'相反)'和关键字参数'{}'未找到。尝试了0个模式:[]有些人会从天堂掉下来救…谢谢..它解决了我的问题,但我不明白我做错了什么,你的解决方案是如何工作的:)就你使用的unclude
而言,你需要显示包含的层次结构。这是官方文件