为什么Django找不到已安装的位于site-packages中的第三方应用程序的模板?

2024-05-29 09:33:12 发布

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

最近,我剥离了一个旧项目,尝试安装它的应用程序(成功了),还安装了django帮助热线/引导表。但是django既找不到帮助台模板,也找不到bootstrapform模板。我的设置.py看起来像:

import os

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


# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'key'

DEBUG = True

ALLOWED_HOSTS = []

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'accounts',
    'index',
    'taggit',
    'helpdesk',
    'bootstrapform',
)

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.security.SecurityMiddleware',
)

HELPDESK_PATH       = "/home/cchilders/.local/virtualenv/new_bookmarks/lib/python2.7/site-packages/helpdesk/templates",
BOOSTRAPFORM_PATH   = "/home/cchilders/.local/virtualenv/new_bookmarks/lib/python2.7/site-packages/bootstrapform/templates"

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, "templates"), 
                "/home/cchilders/.local/virtualenv/new_bookmarks/lib/python2.7/site-packages/helpdesk/templates",
                "/home/cchilders/.local/virtualenv/new_bookmarks/lib/python2.7/site-packages/bootstrapform/templates",],

        'APP_DIRS': False,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

STATIC_ROOT = '/home/cchilders/django_practice/new_bookmarks/static'
STATIC_URL = '/static/'

我现在没有问题,但我很困惑为什么我必须手动执行HELPDESK_PATH和BOOSTRAPFORM_PATH。上一次我启动这个程序时,安装这些应用程序就解决了这个问题,使用相同的模板配置。我安装了这些:

^{pr2}$

我正在运行一个VE(就像我发现模板时一样),包在预期的位置:

~/.local/virtualenv/new_bookmarks/lib/python2.7/site-packages/bootstrapform/templates

当关闭新的url返回'DIRS': [os.path.join(BASE_DIR, "templates"), ],时,我得到

TemplateDoesNotExist at /helpdesk/
helpdesk/public_homepage.html


Django tried loading these templates, in this order:
Using loader django.template.loaders.filesystem.Loader:
/home/cchilders/django_practice/new_bookmarks/templates/helpdesk/public_homepage.html (File does not exist)

我不明白为什么它不检查平常的地方。我的工作,如果我停用它,我就不能运行服务器,因为丢失了像“taggit”这样的包。是什么原因导致django忽略站点包,而不去寻找basedir/templates之外的模板?谢谢你


Tags: pathdjangoauth模板homenewoslocal

热门问题