61

我在输入时遇到了这个问题localhost:8000/admin/

`TemplateSyntaxError: 无法解析剩余部分:来自 'admin:password_change' 的 ':password_change'。'url' 的语法在 Django 1.5 中发生了变化,请参阅文档。

这是我的一部分settings.py

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'grappelli',
    'filebrowser',
    # Uncomment the next line to enable the admin:
     'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    #'django.contrib.admindocs',
     'tinymce',
     'sorl.thumbnail',
     'south',
     'django_facebook',
     'djcelery',
     'devserver',
     'main',
)
AUTH_USER_MODEL = 'django_facebook.FacebookCustomUser'

AUTHENTICATION_BACKENDS = (
    'django_facebook.auth_backends.FacebookBackend', 
    'django.contrib.auth.backends.ModelBackend',
    # Uncomment the following to make Django tests pass:
    'django.contrib.auth.backends.ModelBackend',
)

我做错什么了吗?

PS:这是我的完整追溯 https://gist.github.com/anonymous/e8c1359d384df7a6b405

编辑:

我根据请求粘贴 grep 的输出:

$ ack-grep --type=python -r ':password_change' .
lib/python2.7/site-packages/django/contrib/admin/sites.py
264:url = reverse('admin:password_change_done', current_app=self.name)

lib/python2.7/site-packages/grappelli/dashboard/dashboards.py
147:reverse('%s:password_change' % site_name)],

$ ack-grep --type=html -r ':password_change' .
lib/python2.7/site-packages/django/contrib/admin/templates/admin/base.html
36:<a href="{% url 'admin:password_change' %}">{% trans 'Change password' %}</a> /

lib/python2.7/site-packages/grappelli/templates/admin/includes_grappelli/header.html
12:{% url admin:password_change as password_change_url %} 
4

8 回答 8

129

此错误通常意味着您在尝试渲染的模板中的某处忘记了结束引号。例如:({% url 'my_view %}错误)而不是{% url 'my_view' %}(正确)。在这种情况下,导致问题的是冒号。通常您会编辑模板以使用正确的{% url %} 语法

但是 django 管理站点没有理由抛出这个,因为它知道它自己的语法。因此,我最好的猜测是这grapelli会导致您的问题,因为它会更改管理模板。从已安装的应用程序中删除 grappelli 有帮助吗?

于 2013-10-17T16:08:01.640 回答
4

后面不应该有空格name

不正确:

{% url 'author' name = p.article_author.name.username %}

正确的:

{% url 'author' name=p.article_author.name.username %}
于 2020-05-07T20:15:44.180 回答
2

templates/admin/includes_grappelli/header.html的第 12 行,您忘记admin:password_change'.

url Django 标记语法应始终如下:

{% url 'your_url_name' %}
于 2020-04-12T11:33:46.610 回答
2

对我来说,它使用 {{ }} 而不是 {% %}:

href="{{ static 'bootstrap.min.css' }}"  # wrong
href="{% static 'bootstrap.min.css' %}"  # right
于 2021-02-05T18:27:06.450 回答
1

当您使用 jinja 模板(调用对象方法的语法不同)并且您忘记在 settings.py 中设置它时也会发生

于 2019-12-16T16:38:44.817 回答
1

您在 settings.py 中缩进了部分代码:

# Uncomment the next line to enable the admin:
     'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    #'django.contrib.admindocs',
     'tinymce',
     'sorl.thumbnail',
     'south',
     'django_facebook',
     'djcelery',
     'devserver',
     'main',

因此,它给你一个错误。

于 2020-06-08T16:13:11.583 回答
1

模板语法错误:由于多种原因,其中之一是 {{ post.date_posted|date: "F d, Y" }} 是冒号(:) 和引号(")之间的空格,如果您删除空格,则它可以工作像这样..... {{ post.date_posted|date:"F d, Y" }}

于 2020-02-11T06:11:36.510 回答
0

确保您正确使用静态文件和 URL

<link href="{% static 'css/semantic.min.css' %}" rel="stylesheet">
  • 检查它是否正确地用引号括起来
  • 检查开始和结束括号
  • 检查标签是否正确关闭
于 2021-08-10T05:26:24.877 回答