传递自定义 html 模板不适用于 django 中的重置密码

Passing custom html template doesn't work with reset password in django

我正在为我的 Django 应用程序实现重置页面。如果我使用 auth_views.PasswordResetView.as_view() 而不传入 template_name,一切正常。它使用默认的 django 提供的模板,我收到确认电子邮件,密码已成功重置,但我想传递我自己的模板来这样做,它具有简单的形式,带有图像和一个电子邮件输入标签。视图显示正常,但当我单击提交时,它仅在控制台中显示 1 post 请求。

我已经尝试实现注册目录,因为它在源代码中使用了该目录,但到目前为止还没有成功。我还将输入更改为提交按钮。我也尝试为 css 删除额外的样式 类。

我正在使用以下路径重置页面。

path('login/password-reset/',
        auth_views.PasswordResetView.as_view(),
        name = 'password_reset' ),

传递以下内容生成了视图,但是当我提交电子邮件时,它并没有让我进入 reset_done。

 path('login/password-reset/',
        auth_views.PasswordResetView.as_view(template_name = 'login/password_reset_form.html'),
        name = 'password_reset' ),

我的其余网址如下:

path('login/password-reset/done',
        auth_views.PasswordResetDoneView.as_view(),
        name = 'password_reset_done' ),   
path('login/password-reset-confirm/<uidb64>/<token>/',
        auth_views.PasswordResetConfirmView.as_view(),
        name = 'password_reset_confirm' ),      
path('login/password-reset-complete/',
        auth_views.PasswordResetCompleteView.as_view(),
         name='password_reset_complete'),    

模板在这里:

<form method="POST" class="register-form" id="login-form" action= '' >
{% csrf_token %}
<div class="form-group">
    <label for="your_name">Enter registered email</label>
    <input type="text" name="your_name" id="your_name" placeholder="Email"/>
</div>
<div class="form-group">
    <input type="submit" name="signin" id="signin" class="form-submit" value="Reset"/>
</div>
</form>

如有任何帮助,我们将不胜感激!

您的自定义模板有此输入:

<input type="text" name="your_name" id="your_name" placeholder="Email"/>

这是无效的,因为 Django 的 PasswordResetForm 需要一个字段,其 nameemail,而不是 your_name。因此表单将无法验证并且视图将 re-render 表单出错。您需要使用类似:

<input type="text" name="email" id="id_email" placeholder="Email"/>

更好的是不要自己渲染字段,而是让 Django 渲染它:

{{ form.email.errors }}
{{ form.email }}

...这样你就不是hard-coding字段名了。此外,您没有呈现表单错误,这就是您没有意识到表单无效的原因。