我正在处理正式的Django教程。在part two结束时,他们可以稍微自定义管理模板(更改一些标题文本)。我认为我已经做好了一切,但显然我没有,因为在运行syncdb并重新启动服务器之后,管理站点看起来完全一样。我的项目目录(不包括virtualenv部分)如下所示:
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
,但没有任何工作要做。每次我确认它实际上是在创建一个文件路径字符串(带有一个简单的print语句)。
为了试着看看发生了什么,我编辑了原来的Django base_site.html它的管理文件夹,这改变了我的网站,所以它显然仍在使用它。我已经阅读了几篇SO帖子,我真的不知道该怎么做了。
哦,如果它是相关的:Python 2.7.3和Django 1.4.3
答案 0 :(得分:4)
我要尝试的第一件事是删除你的* .pyc文件,它们通常包含过时的信息,这些信息有时可能导致类似的问题。
如果情况并非如此,那么我会仔细检查您认为是{问题}的PROJECT_PATH
。
dirname
可以获取包含目录。因此,如果该行在settings.py中,它将返回/path/to/inner/mysite
主要mysite中的那一行,因为内部templates
中没有mysite
目录,所以它不起作用。
你需要做的就是这个。
PROJECT_PATH = os.path.realpath(os.path.dirname(os.path.dirname(__file__)))
当与模板结合使用时,它将返回外部mysite
路径,它将返回正确的路径。
一切都应该有效。