django-rest-auth:密码重置功能问题

问题描述 投票:1回答:1

我一直在尝试使用django-rest-auth在DRF中设置密码重置功能。早些时候我收到错误TemplateDoesNotExist:registration / password_reset_email.html我通过添加以下代码解决了

serialize人.朋友

from rest_auth.serializers import PasswordResetSerializer
from allauth.account.forms import ResetPasswordForm  

class PasswordSerializer(PasswordResetSerializer):
    password_reset_form_class = ResetPasswordForm

settings.朋友

REST_AUTH_SERIALIZERS = {
    'PASSWORD_RESET_SERIALIZER': 'api.serializers.PasswordSerializer',
}

但是,现在我进入另一个问题 - “NoReverseMatch:未找到'account_reset_password_from_key'的反向'。”account_reset_password_from_key'不是有效的视图函数或模式名称。“并没有找到任何解决方案或解决方法。

任何帮助,将不胜感激。

python django django-rest-framework django-allauth django-rest-auth
1个回答
2
投票

所以,最后我得到了密码重置功能。这是怎么回事 -

我们在urls.py中只需要一个网址 -

urlpatterns = [
url(r'^account/', include('allauth.urls')),  
url(r'^rest-auth/', include('rest_auth.urls')),  

# This is the only URL required for BASIC password reset functionality.
# This URL creates the confirmation link which is sent via e-mail. All of the rest
# password reset features get their reverse lookup via django-allauth and django-rest-auth.
url(r'^password-reset/confirm/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', TemplateView.as_view(),  name='password_reset_confirm'), 

url(r'^rest-auth/registration/account-confirm-email/(?P<key>[-:\w]+)/$', allauthemailconfirmation,
    name="account_confirm_email"),
url(r'^rest-auth/registration/', include('rest_auth.registration.urls'), name='account_signup'),  
]

使用此URL配置首先在/ api / rest-auth / password / reset / error中引发TemplateDoesNotExist。经过大量调试后,我发现问题是针对模板提出的 - registration / password_reset_email.html位于Django Admin的模板目录下。这是因为我正在使用的另一个Django应用程序,它已禁用django管理应用程序。

因此,在INSTALLED_APPS下添加“django.contrib.admin”并删除序列化程序解决了这个问题。

我希望这也解决了其他问题。

PS:调试器是你最好的朋友。 ;)

© www.soinside.com 2019 - 2024. All rights reserved.