gpt4 book ai didi

python - 如何使用 Django 和 Python 实现忘记密码功能

转载 作者:行者123 更新时间:2023-12-01 02:41:42 25 4
gpt4 key购买 nike

我需要一个帮助。我需要使用 Django 实现忘记密码功能。我正在使用 Django 注册和登录页面。我的代码如下:

登录.html:

{% extends 'base.html' %}

{% block content %}
<h2>Log in</h2>
{% if form.errors %}
<p style="color: red">Your username and password didn't match. Please try again.</p>
{% endif %}
<form method="post">
{% csrf_token %}
{% for field in form %}
<p>
{{ field.label_tag }}<br>
{{ field }}<br>
{% for error in field.errors %}
<p style="color: red">{{ error }}</p>
{% endfor %}
{% if field.help_text %}
<p><small style="color: grey">{{ field.help_text }}</small></p>
{% endif %}
</p>
{% endfor %}
<button type="submit">Log in</button>
<a href="{% url 'signup' %}">New to My Site? Sign up</a>
</form>
{% endblock %}

views.py:

class Signup(View):

""" this class is used for user signup """

def get(self, request):
""" this function used to get the sign up form """
form = UserCreationForm()
return render(request, 'plant/signup.html', {'form': form})

def post(self, request):
""" this function used for post the sign up data """
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
return redirect('login')


class AuthLogin(View):

""" Its for login """

def get(self, request):
""" this function used to get the login form """
form = AuthenticationForm()
return render(request, 'plant/login.html', {'form': form})

def post(self, request):
""" this function used for post the login data """
form = AuthenticationForm(None, request.POST or None)
if form.is_valid():
login(request, form.get_user())
return redirect('/')

url.py:

urlpatterns = [
url(r'^$', TemplateView.as_view(template_name="plant/index.html")),
url(r'^logout/$', auth_views.logout,
{'next_page': 'login'}, name='logout'),
url(r'^login/$', core_views.AuthLogin.as_view(), name='login'),
url(r'^signup/$', core_views.Signup.as_view(), name='signup'),
]

在登录页面中,我应该有忘记密码链接。当用户点击它时,重置密码页面将打开,另一个条件是在尝试 3 次错误尝试后,忘记密码按钮将在 1 小时内不可见。

最佳答案

不要自己创建此功能,而是使用内置的 Django 身份验证 View 。 https://docs.djangoproject.com/en/1.11/topics/auth/default/#built-in-auth-views

您唯一需要做的就是将 contrib auth url 添加到您的项目中:

urlpatterns = [
url('^', include('django.contrib.auth.urls')),
]

这为您提供了所有 View ,例如登录、注销、密码重置等。

如果您想自定义模板,请将模板从 /path/to/site-packages/django/contrib/admin/templates/registration/ 复制到您的应用 project/app/templates/registration/ 并进行任何自定义那里。

如果您的应用列在 INSTALLED_APPS 中的 'django.contrib.auth' 之前(它应该始终是这样)您的自定义模板将首先被选中。

关于python - 如何使用 Django 和 Python 实现忘记密码功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45647434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com