Django无法找到模板

har*_*der 1 django django-templates django-settings

所以我一直在尝试设置一个django设置模块,它将检查环境变量和加载设置.

下面是我的设置模块的样子

/templates
    home.html

/settings
    base.py
    prod.py
    dev.py
    test.py
Run Code Online (Sandbox Code Playgroud)

base.py

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

TEMPLATE_DIRS = [
os.path.join(PROJECT_ROOT, "templates"),
]

urls.py

from django.views.generic.simple import direct_to_template

urlpatterns = patterns('',
url(r"^$", direct_to_template, {'template' : 'home.html' }, name="home"),
)
Run Code Online (Sandbox Code Playgroud)

当我将所有设置放在一个文件中时,这工作得很好,但是因为我将文件拆分了,所以我得到错误:

TemplateDoesNotExist at /

home.html

Template-loader postmortem

Django tried loading these templates, in this order:
Using loader django.template.loaders.filesystem.Loader:
/Users/Tulsa/Apps/tulsa-applications-co/tulsa/tulsa/settings/templates/home.html (File does not exist)
Using loader django.template.loaders.app_directories.Loader:
/Users/Tulsa/.Apps/tulsa_io/lib/python2.7/site-packages/django/contrib/auth/templates/home.html (File does not exist)
/Users/Tulsa/.Apps/tulsa_io/lib/python2.7/site-packages/django/contrib/admindocs/templates/home.html (File does not exist)
/Users/Tulsa/.Apps/tulsa_io/lib/python2.7/site-packages/grappelli/templates/home.html (File does not exist)
/Users/Tulsa/.Apps/tulsa_io/lib/python2.7/site-packages/django/contrib/admin/templates/home.html (File does not exist)
/Users/Tulsa/.Apps/tulsa_io/lib/python2.7/site-packages/pagination/templates/home.html (File does not exist)
/Users/Tulsa/.Apps/tulsa_io/lib/python2.7/site-packages/djangosaml2/templates/home.html (File does not exist)
/Users/Tulsa/Apps/tulsa-applications-co/tulsa/tulsa/apps/profiles/templates/home.html (File does not exist)
/Users/Tulsa/.Apps/tulsa_io/lib/python2.7/site-packages/debug_toolbar/templates/home.html (File does not exist)

Using loader django.template.loaders.eggs.Loader:
Run Code Online (Sandbox Code Playgroud)

我在这里失踪了什么?

Ars*_*huk 8

以上所有答案都需要配置TEMPLATE_DIRS或TEMPLATE_LOADERS,这是不必要和正确的.您只需将您的应用程序放入INSTALLED_APPS即可.

例如,如果您的应用程序位于MyMegaApp(settigs.py所在的位置),换句话说,您的项目结构如下所示

MyMegaApp
   MyMegaApp
      templates
         index.html
      settings.py 
   manage.py
Run Code Online (Sandbox Code Playgroud)

然后你必须像这样添加你的应用程序

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Uncomment the next line to enable the admin:
    # 'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
    'MyMegaApp'
)
Run Code Online (Sandbox Code Playgroud)

之后,您的index.html模板将在MyMegaApp/templates文件夹中找到