要使用自己的模板使用内置密码重置/更改视图,您可以按照以下步骤操作:
password_reset.html
。在这个文件中,您可以自定义密码重置/更改视图的外观和感觉。{{ form.field_name.label_tag }}
来渲染表单字段的标签,使用{{ form.field_name.errors }}
来渲染表单字段的错误消息,使用{{ form.field_name }}
来渲染表单字段的输入框。PasswordResetForm
来处理密码重置/更改表单。您可以在视图函数中使用PasswordResetForm(request.POST)
来创建一个表单实例,然后调用form.is_valid()
方法来验证表单数据是否有效。如果表单数据有效,您可以使用form.save()
方法来保存新密码并发送电子邮件通知用户。{% if messages %}
标签来渲染消息,例如密码重置成功或失败的消息。以下是一个简单的示例,展示了如何使用自己的模板使用内置密码重置/更改视图:
password_reset.html
:{% extends 'base.html' %}
{% block content %}
<h2>Password Reset</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Submit</button>
</form>
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endblock %}
PasswordResetForm
:from django.core.mail import send_mail
from django.contrib.auth.forms import PasswordResetForm
from django.shortcuts import render
def password_reset(request):
if request.method == 'POST':
form = PasswordResetForm(request.POST)
if form.is_valid():
form.save(request=request)
messages.success(request, 'Password reset email sent')
return redirect('home')
else:
form = PasswordResetForm()
return render(request, 'password_reset.html', {'form': form})
urls.py
中添加URL模式以将请求路由到视图函数:from django.urls import path
from . import views
urlpatterns = [
path('password_reset/', views.password_reset, name='password_reset'),
]
这样,您就可以使用自己的模板来自定义密码重置/更改视图的外观和感觉,同时利用Django的内置功能来处理密码重置/更改表单。
领取专属 10元无门槛券
手把手带您无忧上云