3

我正在学习官方的 Django 教程。在第二部分结束时,他们让您稍微自定义管理模板(更改一些标题文本)。我认为我做的一切都是正确的,但显然我没有,因为在运行 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 我添加了这些行以使项目使用模板/管理中的模板:

import os
PROJECT_PATH = os.path.realpath(os.path.dirname(__file__))

之后:

TEMPLATE_DIRS = (os.path.join(PROJECT_PATH, 'templates'),)

PROJECT_PATH在将值分配给and时,我尝试了几种斜杠和变体的组合TEMPLATE_DIRS,但没有任何效果。每次我验证它实际上是在制作一个文件路径字符串(使用一个简单的打印语句)。

为了尝试查看发生了什么,我编辑了原始的 Django base_site.html 它的管理文件夹并更改了我的站点,因此它显然仍在使用它。我已经阅读了几篇 SO 帖子,我真的不知道该怎么办了。

哦,如果相关的话:Python 2.7.3 和 Django 1.4.3

4

1 回答 1

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路径,它将返回正确的路径。

然后一切都应该工作。

于 2013-02-19T04:10:47.033 回答