更改管理模板 - Django教程2

时间:2014-02-06 11:45:32

标签: django templates

这个问题或多或少得到了回答here,但它对我不起作用,到目前为止我可以看到更多人遇到同样的问题。

在我的settings.py中,我有以下几行:

 #TEMPLATE_DIRS = [os.path.join(BASE_DIR,'..', 'templates'),]
 TEMPLATE_DIRS = ("/root/GODJANGO/thedjango/django_project",)

注释线不起作用。如果我写了完整的路径,但它不合适,我不想在三个月后迁移我的服务器时遇到问题,因为我不记得这件事了。

  1. 任何人都可以告诉我如何正确地写“我的路径”(“动态,我的意思是”)
  2. 请告诉我放置模板文件夹的最佳目录在哪里以及我的管理模板文件夹

3 个答案:

答案 0 :(得分:1)

如果您有以下项目布局:

manage.py
myproject/
          settings.py
          urls.py
          wsgi.py
          templates/
                   admin/
app1/
app2/

然后,您可以通过将以下内容放入settings.py

来动态设置模板目录
...
SETTINGS_PATH = os.path.abspath(os.path.dirname(__file__))
TEMPLATE_DIRS = (
    os.path.join(SETTINGS_PATH, "templates")
)
...

如果您的模板文件夹位于settings.py的父文件夹中,则需要以下内容:

...
SETTINGS_PATH = os.path.abspath(os.path.dirname(__file__))
PROJECT_FOLDER = (os.path.split(SETTINGS_PATH))[0]  # get the parent directory
TEMPLATE_DIRS = (
    os.path.join(PROJECT_FOLDER, "templates")
)
...

如您所见,我们手动遍历文件树以查找模板文件夹的位置并动态分配。

模板文件夹的最佳位置取决于您的项目布局(< 1.4或> = 1.4),但最好说它应该与您的settings.py文件一起使用。您的管理模板文件夹将基础模板文件夹中:templates/admin/

答案 1 :(得分:1)

你想在评论栏中用这个参数“...”做什么?

如果它是父目录,则可以使用os.path.dirname(BASE_DIR)

第二部分:

这取决于你或团队的工作;我喜欢在每个应用程序的目录中保留模板目录(如果你喜欢这样,你不需要定义TEMPLATE_DIRS)。我的意思是,如果我有新闻应用模板,他们会../news/templates/。但是这次我的朋友(前端开发人员)说我找不到它们,我们可以将它们全部放在一个地方吗? 所以我把它们放在一个带有子目录(../templates/news/)的目录中。此主模板目录位于主项目目录中(在manage.py文件附近)。如果您将此主目录添加到INSTALLED_APPS(因为它类似于应用程序),您也不需要定义TEMPLATE_DIRS。甚至你可以在这里创建models.py admin.py文件。

答案 2 :(得分:0)

考虑到问题的第二部分,根据this,模板最安全的部分是在项目主目录下创建templates目录(例如blog)。

至于第一部分,我不确定。