我无法理解为什么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',
],
},
},
]
答案 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