从Django类继承的密码重置功能-反向url问题(';uidb64';)

从Django类继承的密码重置功能-反向url问题(';uidb64';),django,django-views,django-authentication,Django,Django Views,Django Authentication,我想创建密码重置功能,但要更改模板。 所以我继承了Django类 插入重置密码的电子邮件后,我发现以下错误: NoReverseMatch at/帐户/密码重置/ 使用关键字参数的“确认\重置\密码”则相反 未找到“{uidb64':”,“令牌”:“4y5-9ae986836e35f95b842c'}”。1. 已尝试的模式: ['accounts\/密码重置确认/(?P[0-9A-Za-z_\-])/(?P[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$] 我认为问题

我想创建密码重置功能,但要更改模板。
所以我继承了Django类

插入重置密码的电子邮件后,我发现以下错误:

NoReverseMatch at/帐户/密码重置/

使用关键字参数的“确认\重置\密码”则相反 未找到“{uidb64':”,“令牌”:“4y5-9ae986836e35f95b842c'}”。1. 已尝试的模式: ['accounts\/密码重置确认/(?P[0-9A-Za-z_\-])/(?P[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$]

我认为问题在于“uidb64”,但我不知道为什么它是空的

观点:

class CustomPasswordResetView(PasswordResetView):

    form_class = CustomPasswordResetForm
    email_template_name = 'account/password_reset_email.html'
    template_name = 'account/password_reset.html'

class UserPasswordResetConfirmView(PasswordResetConfirmView):

    pass
表格:

网址:


我认为您的电子邮件模板包含错误。你写道:

a href="http://{{ domain }}{% url 'users:confirm_reset_password' uidb64=uidb token=token %}"

uidb64
是否为空?根据您的
re_路径
,它应该至少包含一个字符。@Sugumar-是,其他与用户相关的视图works@WillemVanOnsem,是,但PasswordResetconfirm不应该生成uidb64吗?@user3531631:是的,但它将其存储在
uid
中,不是
uidb
@user3541631:我认为您需要使用
html\u email\u template\u name
(两者都是,这样它会生成一封多部分电子邮件)。由于某些电子邮件客户端不呈现HTML,因此更安全的做法是还包含“纯文本”版本。
path('password-reset/', UserPasswordResetView.as_view(), name='reset_password'),

re_path(r'^password-reset-confirm/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
UserPasswordResetConfirmView.as_view(), name='confirm_reset_password')
<form action="" method="post">
  {% csrf_token %}
  <div class="row ">
    {{ form.email }}
  </div>
  <div class="l-action">
    <input type="submit" class="button" value="Reset my password">
  </div>
</form>
a href="http://{{ domain }}{% url 'users:confirm_reset_password' uidb64=uidb token=token %}"
a href="http://{{ domain }}{% url 'users:confirm_reset_password' uidb64=uidb token=token %}"
a href="http://{{ domain }}{% url 'users:confirm_reset_password' uidb64=uid token=token %}"