Django 管理员 TemplateSyntaxError / TemplateDoesNotExist at /admin/
Posted
技术标签:
【中文标题】Django 管理员 TemplateSyntaxError / TemplateDoesNotExist at /admin/【英文标题】:Django admin TemplateSyntaxError / TemplateDoesNotExist at /admin/ 【发布时间】:2011-07-17 08:12:04 【问题描述】:我刚刚将 django 更新到 1.2.4 版,但是在安装管理员时采取了正常步骤,我收到了 TemplateSyntaxError:
TemplateSyntaxError at /admin/
Caught TemplateDoesNotExist while rendering: admin/base.html
所以已经创建了一个超级用户,我已经安装了应用程序,运行 syncdb。我的网址页面如下:
[...]
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# admin enabled
(r'^admin/doc/', include('django.contrib.admindocs.urls')),
(r'^admin/', include(admin.site.urls)),
[...]
此外,如果我遵循管理媒体的路径,例如http://localhost:8000/static/admin/css/base.css
我明白了:Permission denied: /static/admin/css/base.css
- 修复了这个问题,但加载管理员时仍然存在同样的错误
更新
好的,现在可以通过将管理模板放在我的普通模板目录中来工作。但我认为这是一个坏主意,但这可能意味着它可能只是权限或路径的问题?
更新
这可能是权限问题吗?我想把这些 CHMOD 成什么?
pwd /Library/Python/2.6/site-packages/django/contrib/admin/templates/admin
Adam-Gambles-MacBook-Air:admin adamgamble$ ls -al
total 168
drwxr-xr-x 26 root admin 884 17 Mar 12:27 .
drwxr-xr-x 4 root admin 136 17 Mar 12:27 ..
-rw------- 1 root admin 268 18 Mar 2008 404.html
-rw------- 1 root admin 502 18 Mar 2008 500.html
-rw------- 1 root admin 1095 4 May 2010 actions.html
-rw------- 1 root admin 347 23 Aug 2008 app_index.html
drwxr-xr-x 3 root admin 102 17 Mar 12:27 auth
-rw------- 1 root admin 3605 10 Oct 02:59 base.html
[...ETC...]
问题已修复
涉及重新安装 django,并开始一个新项目。结果不满意,但感谢您的帮助!
【问题讨论】:
您要加载的 URL 是什么?http://localhost:8000/admin/
:现在可以使用,但请查看更新,有什么想法吗?
【参考方案1】:
TemplateDoesNotExist 位于 /admin/doc/
这意味着您错过了前面概述的先决条件:没有安装 docutils 包
pip install docutils
或者
django.contrib.admindocs
包未添加到settings.py
中的INSTALLED_APPS
变量中。
【讨论】:
【参考方案2】:检查django.contrib.admin
是否已添加到INSTALLED_APPS
设置中。如果它不存在,那么管理模板目录 django/contrib/admin/templates
将不会添加到模板目录列表中,您将收到 TemplateDoesNotExist
错误。
此外,确保将django.template.loaders.app_directories.Loader
添加到TEMPLATE_LOADERS
设置中。这是实际的加载器,它知道任何已安装应用程序包根目录中的任何templates/
目录都应该用于模板发现。
【讨论】:
我知道这有点牵强,但也许您不小心在某处遗漏了列表项的逗号分隔符?【参考方案3】:通常在 django 中,静态文件(如 js 脚本或 css 和图像)由不同的处理程序提供服务。您似乎没有提供以“^static”开头的 URL,那么应用程序可能找不到它们。 我建议您在 url.py 中添加一行:
(r'^static/(?P<path>.*)$', 'django.views.static.serve',
'document_root': '/path/to/static/files'),
并尝试从其 URI 访问 CSS。如果你能够这样做,那么模板也应该被正确渲染。
...但同样,该错误表示模板呈现错误。您是否遵循基本安装程序? http://docs.djangoproject.com/en/1.2/intro/tutorial02/
【讨论】:
啊,刚刚进行了更改,但模板仍未加载,即我现在可以访问 base.css ..有什么想法吗? 通常管理站点有所有模板(它们存储在 django 安装目录中)。如果您逐步遵循该过程,则应该没有问题。如果你仍然有问题,那么可能是 django 安装中的某些目录访问受限。 你添加了默认的url吗?:from django.conf.urls.defaults import * 是的,我会继续查看我的设置,我已经意识到如果我将管理模板符号链接到我的模板目录,那么它会起作用,但我认为/不应该这样做不是好习惯不必那样做?? 是的from django.conf.urls.defaults import *
在 urls.py 的顶部以上是关于Django 管理员 TemplateSyntaxError / TemplateDoesNotExist at /admin/的主要内容,如果未能解决你的问题,请参考以下文章
Django,如何将变量从 Django 管理员传递到模板?
Askbot 安装 - /questions/ 处的 TemplateSyntaxError 无效块标签:'import'