如何覆盖我的模板而不是django管理面板来重置密码?

ims*_*ful 3 python django django-templates django-views python-3.x

我正在关注此博客以重置Django中的用户密码。运行良好。但是问题是我想在重置密码或确认邮件时显示模板而不是Django管理面板。我该如何实现?

这是我的urls.py文件

url(r'^password_reset/$', password_reset , name='password_reset_reset1'),
url(r'^password_reset/done/$', password_reset_done, 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})/$',
    password_reset_confirm, name='password_reset_confirm'),
url(r'^reset/done/$', password_reset_complete, name='password_reset_complete'),
Run Code Online (Sandbox Code Playgroud)

对于模板和视图,我需要采取什么步骤>我已经尝试了很多,并添加了一些文件,例如:

registration/password_reset_form.html
registration/password_reset_subject.txt
registration/password_reset_email.html 
registration/password_reset_done.html
registration/password_reset_confirm.html 
registration/password_reset_complete.html
Run Code Online (Sandbox Code Playgroud)

但是没有效果>我只想在重置密码时呈现我的网站模板。

这是我的目录结构:

url(r'^password_reset/$', password_reset , name='password_reset_reset1'),
url(r'^password_reset/done/$', password_reset_done, 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})/$',
    password_reset_confirm, name='password_reset_confirm'),
url(r'^reset/done/$', password_reset_complete, name='password_reset_complete'),
Run Code Online (Sandbox Code Playgroud)

谢谢!

小智 7

您还可以确保您的应用优先于INTALLED_APPS中的所有其他Django应用,例如

INSTALLED_APPS = [
'your_app_name',

'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.sites',
'django.contrib.staticfiles',
]
Run Code Online (Sandbox Code Playgroud)

用您的应用名称替换your_app_name


小智 5

在您的 settings.py 中,确保您的 TEMPLATES 设置等于以下内容

TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [os.path.join(BASE_DIR, 'templates')],
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
            'django.template.context_processors.debug',
            'django.template.context_processors.request',
            'django.contrib.auth.context_processors.auth',
            'django.contrib.messages.context_processors.messages',

        ],
    },
},]
Run Code Online (Sandbox Code Playgroud)

这里最重要的部分是DIRS

  • 是的,“DIRS”是纠正该问题的正确位置。所以,在这种情况下,它应该是: 'DIRS': [os.path.join(BASE_DIR, 'feed', 'templates')], (2认同)

ims*_*ful 1

进入Django admin注册目录

/home/username/Desktop/Project_folder/virtual_env_name/lib/python3.6/site-packages/django/contrib/admin/templates
Run Code Online (Sandbox Code Playgroud)

现在打开password_reset_form.html并替换

{% extends "admin/base_site.html" %}
Run Code Online (Sandbox Code Playgroud)

从模板中,您想要扩展。就我而言,我执行以下操作

{% extends "feed/base.html" %}
Run Code Online (Sandbox Code Playgroud)

feed:应用程序名称base.html:基础文件

  • 这意味着您每次重新创建虚拟环境时都要重做 (2认同)