我正在为django应用程序实现重置页面。如果我在不传入template_name的情况下使用auth_views.PasswordResetView.as_view(),则一切正常。它使用默认的django提供的模板,我收到确认电子邮件,密码已成功重置,但我想传递自己的模板来这样做,该模板具有带有图像和一个电子邮件输入标签的简单形式。该视图显示正常,但是当我单击“提交”时,它仅在控制台中显示1个发布请求。
我已经尝试实现注册目录,因为在源代码中它使用了注册目录,但到目前为止还没有运气。我也将输入更改为提交按钮。我也尝试过删除CSS的其他样式类。
我正在使用以下路径来重置页面。
path('login/password-reset/',
auth_views.PasswordResetView.as_view(),
name = 'password_reset' ),
通过以下操作会生成视图,但是当我提交电子邮件时,并没有让我重新设置。
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>
任何帮助将不胜感激!
答案 0 :(得分:1)
您的自定义模板具有以下输入:
<input type="text" name="your_name" id="your_name" placeholder="Email"/>
这是无效的,因为Django的PasswordResetForm
需要一个name
是email
而不是your_name
的字段。因此,表单将无法验证,并且视图将重新呈现具有错误的表单。您需要使用类似的内容:
<input type="text" name="email" id="id_email" placeholder="Email"/>
更好的方法不是自己渲染字段,而是让Django使用以下方式渲染字段:
{{ form.email.errors }}
{{ form.email }}
...,这样就不会硬编码字段名称。另外,您没有呈现表单错误,这就是为什么您没有意识到表单无效的原因。