我正在关注Django的官方Tutorial 2但是由于某些原因,尽管按照我的理解正确地执行了所有步骤,但无法创建管理网站。
这是我得到的错误:
TemplateDoesNotExist at /admin/
admin/login.html
Request Method: GET
Request URL: http://127.0.0.1:8000/admin/
Django Version: 1.3.1
Exception Type: TemplateDoesNotExist
Exception Value:
admin/login.html
Exception Location: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/template/loader.py in find_template, line 138
Python Executable: /Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
Python Version: 2.7.2
Python Path:
['/Users/jcugley/Documents/Programming/Python/Django/mysite',
'/Library/Python/2.7/site-packages/setuptools-0.6c11-py2.7.egg',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages',
'/Library/Python/2.7/site-packages']
Server time: Tue, 24 Jan 2012 18:40:03 -0600
在取消注释以下行(已注释)后发生错误:
### urls.py ###
from django.conf.urls.defaults import patterns, include, url
from django.contrib import admin # THIS LINE
admin.autodiscover() # THIS LINE
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)), # THIS LINE
)
如果我再次发表评论,就可以摆脱错误。
我执行在settings.py中的INSTALLED_APPS中有django.contrib.admin
答案 0 :(得分:25)
我遇到了同样的问题,我不得不强迫点重新下载django。
pip install -r requirements.txt --ignore-installed --force-reinstall --upgrade --no-cache-dir
注意:我知道--no-cache-dir
选项是必要的,我不确定其他选项是否都是必需的。
答案 1 :(得分:9)
我正在使用Django版本1.9.7,当我尝试将admin_tools(菜单和仪表板)添加到我的应用程序时,我遇到了类似的问题。我发现我必须做三件事:
编辑settings.py中的INSTALLED_APPS选项,如下所示(请注意,admin_tools位于django contrib之前,'mines'是我的应用程序的名称):
INSTALLED_APPS = [
'admin_tools',
'admin_tools.theming',
'admin_tools.menu',
'admin_tools.dashboard',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'mines'
]
编辑settings.py文件中的TEMPLATE设置,如下所示(注意添加的'loaders'选项,APP_DIRS现在设置为false ):
TEMPLATES = [{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'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',
],
'loaders': [
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
'admin_tools.template_loaders.Loader',
],
},
}]
最后我更新了我的urls.py文件,如下所示(请注意admin_tools网址的包含):
from django.conf.urls import include,url
from django.contrib import admin
from mines.views import SummaryByMapIcon
urlpatterns = [
url(r'^admin_tools/', include('admin_tools.urls')),
url(r'^admin/', admin.site.urls),
url(r'^summarybymapicon$', SummaryByMapIcon, name='summarybymapicon'),
]
答案 2 :(得分:6)
我通过使用--no-cache-dir
选项重新安装Django解决了同样的问题:
pip uninstall django
pip install django --no-cache-dir
感谢答案here。
答案 3 :(得分:4)
因为它适用于其他人的机器,并且因为你启用了app目录加载器,所以在INSTALLED_APPS
中启用了管理站点,这就是发现模板所需的全部内容(我的意思是,还可以吗?) - 我只能假设您的django安装有问题。
这将是一个很好的机会开始使用virtualenvs和全新安装的django来排除你的设置:
启动终端,导航到您的项目目录(实际上并不重要......)
pip install virtualenv # if you don't have it.
virtualenv --no-site-packages env
# this creates a virtual python environment that doesn't include system packages
source env/bin/activate
# this forces your bash session to use that environment
pip install django
# installs a fresh copy of django to your new environment
cd path_to_my_django_project
# now go to your site directory
python manager.py runserver
# visit admin site.
答案 4 :(得分:2)
有同样的问题。奇怪的是,我发现有时{d}不会从你的django / contrib / admin复制template
和media
。因此,您需要将它们复制到虚拟env django目录。
,即您需要的/venv/lib/python2.7/site-packages/django/contrib
目录
ln -s ~/Sites/your_dj_app/venv/django/contrib/admin/templates templates
和
ln -s ~/Sites/your_dj_app/venv/django/contrib/admin/media media
我很高兴我的问题得到了解决但却非常恼火,我不得不花一个多小时来调试它。
希望你不必:)
答案 5 :(得分:2)
从经验丰富的魔术师那里继承一个Django应用程序,我希望通过Django-admin查看它来理解该模型。由于应用程序的模型尚未在Admin中,我创建了admin.py
并遇到了各种问题。我试过All-Of-The-Above(TM)并发现了这个:
我把路径搞糊涂了。我把admin.py
文件放到了错误的目录中。如果你有类似.../app/app/app/app/app...
的内容,请确保知道哪些app
需要保留admin.py
。我想通过将垃圾放入文件并注意,它不会崩溃。因此'crap'没有被执行,文件出现问题。固定的。
TemplateDoesNotExist
在'admin / index.html'上该应用的settings.py
配置为仅以{TEMPATES BACKEND'的形式运行django.template.backends.jinja2.Jinja2
。但管理员需要标准django.template.backends.django.DjangoTemplates
才能使其正常运行。我read,可以配置两个模板引擎。我从不同的应用程序复制了标准块。固定的。
TemplateDoesNotExist
关于'admin / widgets / related_widget_wrapper.html'虽然管理员现在正在工作,但看着单个对象仍然被打破。我搜索了丢失的模板,发现它很好。更改TEMPLATES
设置中的任何内容都不会改善任何内容。我手动插入'DIRS': []
中的路径,更改了选项,删除了Jinja后端,没有。感觉就像是再次更改了错误的文件。使用调试器,我发现即使没有配置Jinja,它仍然会运行Jinja。最后,在settings.py
中,我发现了这一点:
FORM_RENDERER = 'django.forms.renderers.Jinja2'
并将其评论出去了Admin。
醇>不知道它对应用程序的其余部分做了什么,但是为了学习它没关系。
答案 6 :(得分:1)
我遇到了类似的问题,试图为django-admin-tools
Django 2.0.2
最终我开始工作了。这是我的TEMPLATES
设置。
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, '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',
],
'loaders' : [
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
'admin_tools.template_loaders.Loader',
]
},
},
]
即使我覆盖了默认的管理模板,这仍然有效。
请务必记下django-admin-tools
个应用的放置位置。请参阅上面的@Abrie Nel的答案。
答案 7 :(得分:1)
for windows user the admin_tools in the templates section should be place in the begining
'loaders': [
**'admin_tools.template_loaders.Loader',**
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
答案 8 :(得分:1)
就我而言,我不得不将APP_DIRS
从False
更改为True
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, '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',
],
},
},
]
答案 9 :(得分:1)
如果您在settings.py中的TEMPLATES
中进行了更改,则可能会发生此问题:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
os.path.join(BASE_DIR, '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',
],
},
},]
我偶然发现了这个问题,alhamdulillah,当我将'APP_DIRS': False,
更改为'APP_DIRS': True,
时,我的错误就解决了
答案 10 :(得分:0)
我遇到了同样的错误,经过几次pip安装和卸载Django,它仍然无法正常工作。然后我从Django网站下载Django tar.gz文件,并从这个文件安装,一切都很好。希望这可以帮助某人。
答案 11 :(得分:0)
尽管它们有用,但上述答案是不完整的。我认为开发人员应该知道后端发生了什么,即"""是这个例外被提出来了。
正如可以在异常中看到,异常是TemplateDoesNotExist,值名称是路径,而#34; loader.py"文件。虽然我使用的是Django 1.1.4,但由于正在检查os.path.isdir(template_dir)的行(在loader.py中),我很确定会引发异常。它找不到django文件夹中的模板文件夹(目录),该文件夹位于python的Lib文件夹中的site-packages文件夹中。
直观地说,这是因为django的安装不当。然而,通过搜索来源找出异常的原因是一个很好的练习。当我的项目中出现此错误时,我没有重新安装django,而是从root(C:/ Python27 / django / contrib)复制文件夹 - 是的我使用的是Windows - 对应于site-packages中的对应文件并且它工作正常!
答案 12 :(得分:0)
我要添加一个“答案”,因为我不能用当前的“声誉”添加评论。
以下 Aaron 解决方案:
在带有Docker的Django 1.4的项目中,存在相同的问题(访问yourproject / admin / login.html或yourproject / admin / index.html)。我在python.dockerfile中使用了这个,并解决了:
"RUN pip install -r requirements.txt --no-cache-dir"
在执行此操作之前,我验证了在docker内部输入的内容,即文件夹usr / local / lib / python2.7 / site-packages / django / contrib / admin /中不存在文件夹/templates/。
在阅读这篇文章之前,我正在阅读以下内容: https://www.mail-archive.com/search?l=django-users@googlegroups.com&q=subject:%22TemplateDoesNotExist+at+%5C%2Fadmin%5C%2F%22&o=newest&f=1
答案 13 :(得分:0)
pip uninstall django
pip install django --no-cache-dir
这两个对我有用。我正在使用Django 2.2.3
答案 14 :(得分:0)
就我而言,我的INSTALLED_APPS很好,但只需要在TEMPLATE_DIRS中指向django管理模板即可。
import os #Put at the starting line
PROJECT_DIR = os.path.dirname(__file__)
TEMPLATE_DIRS = (
... #Another folder,
os.path.join(PROJECT_DIR, 'relative/path/to/virtualenv/my_env/django/contrib/admin/templates'),
)
它有效
答案 15 :(得分:-1)
我认为有些软件包没有安装在INSTALLED_APPS中,在我的情况下我安装了'import_export',因为我使用'importexportmodels