如何覆盖默认的 django 忘记密码模板?
Posted
技术标签:
【中文标题】如何覆盖默认的 django 忘记密码模板?【英文标题】:How to override default django forgot password template? 【发布时间】:2013-04-12 10:06:24 【问题描述】:密码重置模板存储在:
/usr/local/lib/python2.7/dist-packages/django/contrib/admin/templates/registration
但是,我想覆盖我的 Django 提供的默认模板。我不想直接进入该目录并编辑模板。因此,我在templates/registration
目录中创建了同名的密码重置模板。但是,我仍然得到相同的内置 django 模板。我的一个模板 password_reset_form.html 看起来像这样:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>ATS | Password Reset Form</title>
<!--google web font-->
<link href='http://fonts.googleapis.com/css?family=Droid+Serif:400,400italic,700|Lato:700,300,400' rel='stylesheet' type='text/css'>
<!--style sheets-->
<link rel="stylesheet" media="screen" href=" STATIC_URL bootstrap/css/bootstrap.css"/>
<link rel="stylesheet" media="screen" href=" STATIC_URL bootstrap/css/style.css"/>
<link rel="stylesheet" media="screen" href=" STATIC_URL bootstrap/css/static.css"/>
<style>
li
list-style-type: none;
padding: 0px;
margin: 0px;
#footer
margin-top: 40px;
</style>
<!--jquery libraries / others are at the bottom-->
<script src=" STATIC_URL bootstrap/js/jquery-1.7.1.min.js" type="text/javascript"></script>
</head>
<body>
<!-- Header starts
================================================== -->
<header id="header">
<div class="container">
<div class="row">
<!--logo starts-->
<div class="span4"> <a href="/login/"><img src=" STATIC_URL bootstrap/img/auto.png"></a> </div>
<!--logo ends-->
</div>
</header>
<div class="container">
<h2 class="lead text-center">Password Reset</h2><br /> <br />
<form action="" class="well span10" method="post">
% csrf_token %
% block content %
<p class="text-info text-center"><strong>Forgotten your password? Enter your e-mail address below, and we'll e-mail instructions for setting a new one.</strong></p>
<span class="text-error text-center"><strong> form.email.errors </strong></span><br/>
<p class="text-center"><label for="id_email">Enter your E-mail address:</label> form.email </p>
<p class="text-center"><button class="btn btn-success">Reset my Password</button></p>
</form>
% endblock %
</div>
<footer id="footer">
<div class="container">
<div class="row">
<!--small intro and copyright starts-->
<div class="span7">
<a data-toggle="tab" href="/how_it_works/">How it works? </a>
<a data-toggle="tab" href="/how_it_works/">Terms and Conditions </a>
<a data-toggle="tab" href="/how_it_works/">How to use? </a> <br /><br />
<p class="copyright"> ©2013 Automatic Text Summarization(ATS) </p>
</div>
我在模板中缺少什么吗?
【问题讨论】:
【参考方案1】:您是否已将模板放在您的应用程序目录中?如果是这样,请在 INSTALLED_APP
设置中的 django.contrib.admin
之前指定您的应用。
如果您已将模板放置在其他文件夹中,请确认您已在 TEMPLATE_DIRS
中适当地添加了目录,并且 filesystem loader 位于 TEMPLATE_LOADERS
中的 _app_directories _loader 之前。
应该是这样的
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
)
更多参考Template loaders
【讨论】:
是的,我已经做到了。我为我的应用创建的其他模板正在正确加载,因此我在 settings.py 中正确设置了所需的东西。 @user2032220,检查INSTALLED_APPS
中的顺序,你的应用应该在admin
之前。
哦,是的,解决了。只要 *** 允许,我都会接受你的回答。但是有什么理由吗?为什么排序会影响这一点?
@user2032220,在各个地方找模板肯定是有顺序的,所以django是按照INSTALLED_APPS
的顺序在apps目录下找的。span>
实际上,如果您的覆盖模板存在于您的项目文件夹(主模板文件夹)中,则无需更改顺序。看来你的目录结构可能是错误的以上是关于如何覆盖默认的 django 忘记密码模板?的主要内容,如果未能解决你的问题,请参考以下文章