这个问题或多或少得到了回答here,但它对我不起作用,到目前为止我可以看到更多人遇到同样的问题。
在我的settings.py中,我有以下几行:
#TEMPLATE_DIRS = [os.path.join(BASE_DIR,'..', 'templates'),]
TEMPLATE_DIRS = ("/root/GODJANGO/thedjango/django_project",)
注释线不起作用。如果我写了完整的路径,但它不合适,我不想在三个月后迁移我的服务器时遇到问题,因为我不记得这件事了。
答案 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
)。
至于第一部分,我不确定。