Django:我的项目

时间:2017-02-06 07:43:54

标签: django django-templates

我无法理解为什么django无法搜索' home.html'

我的项目名称是lucifer

这是我的项目树

│   ├── lucifer
│   │   ├── __init__.py
│   │   ├── settings
│   │   │   ├── __init__.py
│   │   │   ├── development.py
│   │   │   ├── partials
│   │   │   │   ├── __init__.py
│   │   │   │   ├── base.py
│   │   │   │   ├── database.py
│   │   │   │   └── static.py
│   │   │   └── production.py
│   │   ├── templates
│   │   │   ├── base.html
│   │   │   ├── home.html
│   │   │   └── partials
│   │   │       ├── footer.html
│   │   │       └── header.html
│   │   ├── urls.py
│   │   ├── views
│   │   │   ├── __init__.py
│   │   │   └── home.py

和我的 home.html

{% extends 'base.html' %}

{% block title %}
Home
{% endblock %}

header.html

<p>it is header</p>

footer.html

<p>it is footer</p>

base.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>루시퍼 |{% block title %}{% endblock %}</title>
</head>
<body>

    {% include 'partials/header.html' %}

    {% block content %}
    {% endblock %}

    {% include 'partials/footer.html' %}

</body>
</html>

home.py

from django.views.generic import TemplateView


class Home(TemplateView):
    template_name = 'home.html'

urls.py

from django.conf.urls import url
from django.contrib import admin

from .views import *

urlpatterns = [
    url(r'^admin/', admin.site.urls),
url(r'$^', Home.as_view(), name='home'),
]

我认为没问题。

但错误是

Django version 1.9.7, using settings 'lucifer.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Internal Server Error: /
Traceback (most recent call last):
  File "/Users/hanminsoo/.pyenv/versions/lucifer/lib/python3.4/site-packages/django/core/handlers/base.py", line 174, in get_response
response = self.process_exception_by_middleware(e, request)
  File "/Users/hanminsoo/.pyenv/versions/lucifer/lib/python3.4/site-packages/django/core/handlers/base.py", line 172, in get_response
response = response.render()
  File "/Users/hanminsoo/.pyenv/versions/lucifer/lib/python3.4/site-packages/django/template/response.py", line 160, in render
self.content = self.rendered_content
  File "/Users/hanminsoo/.pyenv/versions/lucifer/lib/python3.4/site-packages/django/template/response.py", line 135, in rendered_content
template = self._resolve_template(self.template_name)
  File "/Users/hanminsoo/.pyenv/versions/lucifer/lib/python3.4/site-packages/django/template/response.py", line 90, in _resolve_template
new_template = self.resolve_template(template)
  File "/Users/hanminsoo/.pyenv/versions/lucifer/lib/python3.4/site-packages/django/template/response.py", line 80, in resolve_template
return select_template(template, using=self.using)
  File "/Users/hanminsoo/.pyenv/versions/lucifer/lib/python3.4/site-packages/django/template/loader.py", line 74, in select_template
raise TemplateDoesNotExist(', '.join(template_name_list), chain=chain)
django.template.exceptions.TemplateDoesNotExist: home.html
[06/Feb/2017 07:40:34] "GET / HTTP/1.1" 500 81753

请告诉我一些建议,谢谢

在settings.partials.base.py中添加 TEMPLATES

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        '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',
            ],
        },
    },
]

5 个答案:

答案 0 :(得分:1)

这就是我们目前的项目......

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        #'DIRS': [],
        'DIRS': [
            os.path.join(BASE_DIR, 'lucifer/templates'),
        ],
        'APP_DIRS': True,
        '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',

                # Enable {{ STATIC_URL }} and {{ MEDIA_URL }}
                'django.template.context_processors.media',
                'django.template.context_processors.static',
            ],
        },
    },
]

答案 1 :(得分:1)

请务必将lucifer放入settings.py INSTALLED_APPS APPS_DIR=True会告诉Django look inside your installed apps

答案 2 :(得分:0)

'DIRS': [os.path.join(dirname(dirname(__file__)), '..')+'/templates']

在Template []

中添加

答案 3 :(得分:0)

试试这个:

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

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates'), ],
        'APP_DIRS': '',
        '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',
                'django.template.context_processors.media',
                'django.template.context_processors.static',
            ],
            'loaders':[
                'django.template.loaders.filesystem.Loader',
            ]

        },

    },
]

答案 4 :(得分:0)

嘿,将模板文件夹添加到主项目目录:

├── calc
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── __pycache__
│   │   ├── __init__.cpython-37.pyc
│   │   ├── urls.cpython-37.pyc
│   │   └── views.cpython-37.pyc
│   ├── tests.py
│   ├── urls.py
│   └── views.py
├── db.sqlite3
├── first_django
│   ├── asgi.py
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-37.pyc
│   │   ├── settings.cpython-37.pyc
│   │   ├── urls.cpython-37.pyc
│   │   └── wsgi.cpython-37.pyc
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── manage.py
└── **templates**
    └── home.html