【问题标题】:reseting the password using django authentication使用 django 身份验证重置密码
【发布时间】:2018-01-18 16:40:17
【问题描述】:

当我尝试使用 Django 的内置密码重置系统时。它没有考虑我的模板。此外,当我单击重置密码按钮时,它会将我带到 Django 管理员重置页面(photo)。

我的the file map

我的 urls.py:-

from django.conf.urls import url
from django.contrib.auth import views as auth_views
from . import views

app_name = 'accounts'

urlpatterns = [
    url(r"^login/$", auth_views.LoginView.as_view(template_name = "accounts/login.html"),name='login'),
    url(r"^logout/$", auth_views.LogoutView.as_view(template_name='thanks.html'), name="logout"),
    url(r"^signup/$", views.SignUpView, name="signup"),
    url(r'^activate/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',views.activate, name='activate'),
    url(r'^password_reset/$', auth_views.PasswordResetView.as_view(template_name='registration/password_reset_form.html'), name='password_reset'),
    url(r'^password_reset/done/$', auth_views.PasswordResetDoneView.as_view(), name='password_reset_done'),
    url(r'^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',auth_views.PasswordResetConfirmView.as_view(), name='password_reset_confirm'),
    url(r'^reset/done/$', auth_views.PasswordResetCompleteView.as_view(), name='password_reset_complete'),
]

模板:-

password_reset_form.html

  {% extends 'reg_base.html' %}
{% load bootstrap3 %}

{% block body_block %}
  <h3 class="display-1">Forgot password</h3>
  <form method="POST">
    {% csrf_token %}
    {% bootstrap_form form %}
    <button class="btn btn-primary" type="submit">Submit</button>
  </form>
{% endblock %}

password_reset_confirm.html

{% extends 'reg_base.html' %}
{% load bootstrap3 %}
{% block body_block %}
  {% if validlink %}
    <h3 class="display-2 text-center">Change password</h3>
    <form class="form-control" method="post">
      {% csrf_token %}
      {% bootstrap_form form %}
      <button class="btn btn-default" type="submit">Change password</button>
    </form>
  {% else %}
    <p class="lead">
      The password reset link was invalid, possibly because it has already been used.
      Please request a new password reset.
    </p>
  {% endif %}
{% endblock %}

已安装的应用程序

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'bootstrap3',
    'accounts',
]

主要的 Urls.py

from django.conf.urls import url, include
from django.contrib import admin
from . import views


urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$',views.HomepageView.as_view(),name='home'),
    url(r'^accounts/', include("accounts.urls")),
    url(r'^accounts/', include("django.contrib.auth.urls")),
]

【问题讨论】:

  • 您没有提供足够的信息。您的模板在哪里?你的TEMPLATES 设置是什么?你的INSTALLED_APPS 设置是什么。您如何包含这些 URL?
  • 请参考问题中提供的照片链接[已编辑]
  • 他要求您显示模板的设置。我认为问题在于您没有指定 Django 在哪里查找模板,当他找不到模板时,他使用标准模板。此外,在您的主 URL 文件中,删除最后一行。

标签: python django python-3.x passwords reset-password


【解决方案1】:

您的INSTALLED_APPS 中有django.contrib.admin 上方的accounts。这意味着将首先找到来自django.contrib.adminregistration/password_reset_form.html 并使用它来代替来自accounts 的模板。

您可以将 accounts 移动到 django.contrib.admin 上方,以便 Django 首先搜索该应用程序,或者将模板名称重命名为不冲突的名称(例如 registration/my_password_reset_form.html)并使用新模板名称更新您的 URL 模式.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 2015-03-16
    • 2011-09-27
    • 2020-08-22
    • 2016-07-21
    相关资源
    最近更新 更多