【发布时间】:2021-04-05 09:24:45
【问题描述】:
我正在尝试使用 Django 重置密码,但出现以下错误:
Method Not Allowed (POST): /reset/done/
Method Not Allowed: /reset/done/
以下是我的表格:
向我的电子邮件发送链接的表单
<form action="{% url 'reset_pass' %}" method="post">
{% csrf_token %}
<div class="form-group">
<input type="email" class="form-control" name="email" placeholder="Email" required autofocus>
</div>
<input type="submit" value="Send Email" class="btn btn-primary btn-block">
</form>
点击该链接后的表单
<form action="{% url 'password_reset_complete' %}" method="post">
{% csrf_token %}
<div class="form-group">
<input type="password" class="form-control" name="new_pass" placeholder="New Password" required autofocus>
</div>
<div class="form-group">
<input type="password" class="form-control" name="confirm_pass" placeholder="Confirm Password" required>
</div>
<input type="submit" value="Update Password" class="btn btn-primary btn-block">
</form>
网址
path('reset/pass/', views.reset_pass, name='reset_pass'),
path('reset/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(template_name="feebeeapp/reset_form.html"), name='password_reset_form'),
path('reset/done/', auth_views.PasswordResetCompleteView.as_view(template_name='feebeeapp/login.html'), name='password_reset_complete')
不确定,我做错了什么。有人可以指导我吗?
【问题讨论】:
-
您提交到错误的视图。您应该提交到
PasswordResetConfirmView视图,该视图将发送电子邮件。 -
在 PasswordResetConfirmView 上,我得到了上面显示的代码表单。在那之后,我相信我将不得不做 PasswordResetCompleteView。
-
不,提交到 same 视图是一种非常常见的模式,但随后使用 POST 请求。该视图将通过电子邮件发送一个重置链接,然后重定向 到
password_reset_complete视图。因此,PasswordResetConfirmView既处理 GET 请求(以呈现表单),又处理 POST 请求(以发送重置链接)。
标签: python django reset-password