我真的有问题,以正确设置TEMPLATE_DIR后搜索了一堆话题,并尝试各种事情。Django模板目录奇怪的行为
这里是我的项目设置:
#settings.py
DEBUG = True
TEMPLATE_DEBUG = DEBUG
import os
PROJECT_PATH = os.path.realpath(os.path.dirname(__file__))
MEDIA_ROOT = ''
MEDIA_URL = ''
STATIC_ROOT = ''
STATIC_URL = '/static/'
STATICFILES_DIRS = (
PROJECT_PATH + '/static/',
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
)
TEMPLATE_DIRS = (
PROJECT_PATH + '/TrainingBook/templates/',
PROJECT_PATH + '/RestClient/templates/',
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'TrainingBook',
)
TEMPLATE_CONTEXT_PROCESSORS = (
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
# 'django.core.context_processors.request',
"TrainingBook.context_processors.global_context",
)
print PROJECT_PATH # /Users/Kuba/Development/University/RestClient
print STATICFILES_DIRS # ('/Users/Kuba/Development/University/RestClient/static/',)
print TEMPLATE_DIRS
# ('/Users/Kuba/Development/University/RestClient/TrainingBook/templates/',
# '/Users/Kuba/Development/University/RestClient/RestClient/templates/')
我的项目结构:
$ pwd
/Users/Kuba/Development/University/RestClient
$ tree
.
├── RestClient
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── settings.pyc
│ ├── templates
│ │ ├── base.html
│ │ ├── home.html
│ │ └── login_form.html
│ ├── urls.py
│ ├── urls.pyc
│ ├── wsgi.py
│ └── wsgi.pyc
├── TrainingBook
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── context_processors.py
│ ├── context_processors.pyc
│ ├── models.py
│ ├── models.pyc
│ ├── templates
│ │ ├── friends.html
│ │ ├── statistics.html
│ │ └── workouts.html
│ ├── tests.py
│ ├── views.py
│ └── views.pyc
├── manage.py
├── settings.py
├── settings.pyc
└── static
├── css
│ ├── bootstrap-glyphicons.css
│ ├── bootstrap.css
│ ├── bootstrap.min.css
│ └── main.css
└── js
├── bootstrap.js
├── bootstrap.min.js
└── jquery-1.10.2.js
我感动 “settings.py” 起来,以获得PROJECT_PATH设置一个等级至 “/ RESTClient实现/”而不是“/ RestClient/RestClient /”。
我还修改manage.py从
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "RestClient.settings")
到
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
当我运行服务器TemplateDoesNotExist上升,我看到了一些奇怪的事情:
Template-loader postmortem
Django tried loading these templates, in this order:
Using loader django.template.loaders.filesystem.Loader:
/Users/Kuba/Development/University/RestClient/TrainingBook/templates/templates/home.html (File does not exist)
/Users/Kuba/Development/University/RestClient/RestClient/templates/templates/home.html (File does not exist)
Using loader django.template.loaders.app_directories.Loader:
/Users/Kuba/.virtualenvs/client/lib/python2.7/site-packages/django/contrib/auth/templates/templates/home.html (File does not exist)
/Users/Kuba/Development/University/RestClient/TrainingBook/templates/templates/home.html (File does not exist)
,你可以看到有“/模板/模板”,即使我没有指定它。
在另一方面,如果我切换到TEMPLATE_DIRS:
TEMPLATE_DIRS = (
PROJECT_PATH + '/TrainingBook/',
PROJECT_PATH + '/RestClient/',
)
TemplateDoesNotExist升起后,我可以看到,装载机在寻找模板:
/Users/Kuba/Development/University/RestClient/RestClient/home.html
/Users/Kuba/Development/University/RestClient/TrainingBook/home.html
我做了什么错?
编辑:问题是,我这样定义的一些看法:
class Home(Base):
template_name = 'templates/home.html'
只要注意'RestCelient'中的settings.pyc' dir - 如果删除它,该怎么办? – alecxe
没有帮助,再加上它重新运行服务器后重新创建。 – koleS
btw该文件将回来,如果进程获得写入权限。它的python编译文件... – Jingo