找不到Django模板

2024-04-19 11:47:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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',
)

Tags: pathdjangoproject模板apposcontexttemplate
3条回答

所以我的问题不在于Django本身,而在于我的环境。我在~/Django项目中运行Django服务器,我们的dev服务器在所有会话注销后加密主目录,这意味着服务无法再找到它。将项目移动到/var/并对manage.py runserver命令进行守护,使项目没有模板“不存在”错误。

只是想添加另一个可能出现Template Does Not Exist错误的情况。

确保您已经在settings.py文件中的INSTALLED_APPS变量中添加了应用程序。仅使用startapp命令是不够的。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myappname', # add your app here :)
]

我知道这很傻,但我知道有些人因为忘记系安全带而没有通过驾驶考试,所以忘记一行代码并不像听起来那么罕见。

尝试更新您的设置,如下所示:

PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

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

(这是在django 1.8中获取基本目录的默认方式)。在Python 3.4之前,__file__不能保证提供绝对文件路径。

您还应该尝试使用os.path.join而不是将目录作为字符串添加(其他平台使用反斜杠),从而保持与平台无关。

相关问题 更多 >