传递自定义 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
需要一个字段,其 name
是 email
,而不是 your_name
。因此表单将无法验证并且视图将 re-render 表单出错。您需要使用类似:
<input type="text" name="email" id="id_email" placeholder="Email"/>
更好的是不要自己渲染字段,而是让 Django 渲染它:
{{ form.email.errors }}
{{ form.email }}
...这样你就不是hard-coding字段名了。此外,您没有呈现表单错误,这就是您没有意识到表单无效的原因。
我正在为我的 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
需要一个字段,其 name
是 email
,而不是 your_name
。因此表单将无法验证并且视图将 re-render 表单出错。您需要使用类似:
<input type="text" name="email" id="id_email" placeholder="Email"/>
更好的是不要自己渲染字段,而是让 Django 渲染它:
{{ form.email.errors }}
{{ form.email }}
...这样你就不是hard-coding字段名了。此外,您没有呈现表单错误,这就是您没有意识到表单无效的原因。