Django 教程 自定义管理模板
我正在学习官方的Django教程。在第二部分的最后,他们让你稍微自定义一下管理员界面模板(比如修改一些标题文字)。我觉得我做的都没错,但显然我还是出错了,因为在运行syncdb并重启服务器后,管理员网站看起来还是一模一样的。我的项目目录(不包括虚拟环境的部分)是这样的:
mysite
├── manage.py
├── mysite
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── settings.py
│ ├── settings.pyc
│ ├── urls.py
│ ├── urls.pyc
│ ├── wsgi.py
│ └── wsgi.pyc
├── polls
│ ├── admin.py
│ ├── admin.pyc
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── models.py
│ ├── models.pyc
│ ├── tests.py
│ └── views.py
└── templates
└── admin
└── base_site.html
在settings.py文件中,我添加了这些代码,让项目使用templates/admin中的模板:
import os
PROJECT_PATH = os.path.realpath(os.path.dirname(__file__))
接下来:
TEMPLATE_DIRS = (os.path.join(PROJECT_PATH, 'templates'),)
我尝试了几种不同的斜杠组合和给PROJECT_PATH
和TEMPLATE_DIRS
赋值的变化,但都没有成功。每次我都确认它确实生成了一个文件路径字符串(用简单的打印语句检查过)。
为了看看发生了什么,我编辑了Django原始的base_site.html文件,它在管理员文件夹里,这样我的网站就发生了变化,所以显然它还是在使用那个文件。我看了好几个StackOverflow的帖子,但我真的不知道该怎么办了。
哦,如果有关系的话:我用的是Python 2.7.3和Django 1.4.3。
1 个回答
4
首先,我建议你删除你的 *.pyc 文件,因为这些文件里面可能存有过时的信息,有时候会导致类似的问题。
如果这样做还不行,那我建议你再仔细检查一下你的 PROJECT_PATH
,我觉得这可能是问题所在。
dirname
是用来获取包含目录的。所以如果这行代码在 settings.py 文件里,它会返回 /path/to/inner/mysite
,也就是在主 mysite 里面的那个。如果你的内层 mysite
里没有 templates
目录,那就会出问题。
你需要做的是这样。
PROJECT_PATH = os.path.realpath(os.path.dirname(os.path.dirname(__file__)))
这样做之后,结合 templates 就能返回正确的外层 mysite
路径。
一切应该就能正常工作了。