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

Django,如何将变量从 Django 管理员传递到模板?

Askbot 安装 - /questions/ 处的 TemplateSyntaxError 无效块标签:'import'

Django项目实践4 - Django网站管理(后台管理员)

Django 管理员 - jQuery 命名空间

Django中的假管理员登录页面