我有一个Django问题,它只是偶尔有问题找到模板。它将运行好几个小时,然后突然无法提供某些模板。有时问题会自行解决,但可以通过运行touch <template>
来解决始终的问题。我目前的解决方案是一个cronjob,它每分钟执行一次touch <project root>
,只要cron保持不变,它就可以工作。然而,我想找到一个适当的解决办法来解决我的问题。
相关设置:
PROJECT_ROOT = os.path.dirname(__file__)
APPS_ROOT = os.path.abspath(os.path.join(PROJECT_ROOT, "apps"))
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
)
TEMPLATE_DIRS = (
(PROJECT_ROOT + '/templates'),
)
TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.auth.context_processors.auth",
"django.core.context_processors.request",
"django.core.context_processors.i18n",
"django.contrib.messages.context_processors.messages",
"base_site.context_processors.app_list"
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
所以我的问题不在于Django本身,而在于我的环境。我在~/Django项目中运行Django服务器,我们的dev服务器在所有会话注销后加密主目录,这意味着服务无法再找到它。将项目移动到/var/并对manage.py runserver命令进行守护,使项目没有模板“不存在”错误。
只是想添加另一个可能出现
Template Does Not Exist
错误的情况。确保您已经在
settings.py
文件中的INSTALLED_APPS
变量中添加了应用程序。仅使用startapp
命令是不够的。我知道这很傻,但我知道有些人因为忘记系安全带而没有通过驾驶考试,所以忘记一行代码并不像听起来那么罕见。
尝试更新您的设置,如下所示:
(这是在django 1.8中获取基本目录的默认方式)。在Python 3.4之前,
__file__
不能保证提供绝对文件路径。您还应该尝试使用os.path.join而不是将目录作为字符串添加(其他平台使用反斜杠),从而保持与平台无关。
相关问题 更多 >
编程相关推荐