[英]How to implement forget password functionality using Django and Python
我需要一個幫助。 我需要使用Django實現忘記密碼功能。 我正在使用Django注冊和登錄頁面。 我的代碼如下:
的login.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('/')
urls.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'),
]
在登錄頁面中,我應該具有forget password
鏈接。 當用戶單擊它時,將打開“重置密碼”頁面,另一種情況是嘗試3次錯誤嘗試后, forget password
按鈕將在1個小時內不可見。
不要自己創建此功能,而要使用內置的Django身份驗證視圖。 https://docs.djangoproject.com/en/1.11/topics/auth/default/#built-in-auth-views
您唯一需要做的就是將contrib auth url添加到您的項目中:
urlpatterns = [
url('^', include('django.contrib.auth.urls')),
]
這為您提供了所有視圖,例如登錄,注銷,密碼重置等。
如果要自定義模板,請將模板格式/path/to/site-packages/django/contrib/admin/templates/registration/
復制到您的應用程序project/app/templates/registration/
然后在其中進行任何自定義。
如果您的應用在INSTALLED_APPS
'django.contrib.auth'
之前列出(應該總是這樣),則將首先選擇您的自定義模板。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.