我最近将Django从v1.3.1升级到v1.4。
我以前settings.py有
settings.py
TEMPLATE_DIRS = ( os.path.join(os.path.dirname( __file__ ), 'templates').replace('\\', '/'), # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". # Always use forward slashes, even on Windows. # Don't forget to use absolute paths, not relative paths. )
这将指向/Users/hobbes3/Sites/mysite/templates,但是因为Django v1.4将项目文件夹移动到了与应用程序文件夹相同的级别,所以我的settings.py文件现在位于/Users/hobbes3/Sites/mysite/mysite/而不是/Users/hobbes3/Sites/mysite/。
/Users/hobbes3/Sites/mysite/templates
/Users/hobbes3/Sites/mysite/mysite/
/Users/hobbes3/Sites/mysite/
所以实际上我的问题是双重的:
os.path
__file__
/Users/hobbes3/Sites/mysite/mysite/settings.py
template
admin
registration
/User/hobbes3/Sites/mysite
/User/hobbes3/Sites/mysite/mysite
os.path.abspath(os.path.join(os.path.dirname( __file__ ), '..', 'templates'))
至于templates文件夹应该放哪里,我不知道自从Django 1.4刚问世以来,我还没有看过它。你可能应该在SE上问另一个问题以解决该问题。
templates
你也可以使用normpath来清理路径,而不是abspath。但是,在这种情况下,Django需要绝对路径而不是相对路径。
normpath
abspath
为了实现跨平台兼容性,请使用os.pardir代替'..'。
os.pardir
'..'