Django:TemplateSyntaxError:无法解析余数

时间:2013-10-17 13:49:10

标签: django django-admin django-facebook

我在输入localhost:8000/admin/时遇到此问题。

  

`TemplateSyntaxError:无法从'admin:password_change'解析余数:':password_change'。在Django 1.5中更改了“url”的语法,请参阅文档。

这是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 %} 

8 个答案:

答案 0 :(得分:77)

此错误通常意味着您忘记了您尝试呈现的模板中某处的结束语。例如:{% url 'my_view %}(错误)而不是{% url 'my_view' %}(正确)。在这种情况下,它是引起问题的冒号。通常,您需要修改模板才能使用正确的{% url %} syntax

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

答案 1 :(得分:3)

{% url 'author' name = p.article_author.name.username %} 后不应有空格。

不正确:

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

正确:

{{1}}

答案 2 :(得分:1)

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

href="{{ static 'bootstrap.min.css' }}"  # wrong
href="{% static 'bootstrap.min.css' %}"  # right

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

在templates / admin / includes_grappelli / header.html的第12行中,您忘记将admin:password_change放在'之间。

URL Django标记语法应始终类似于:

{% url 'your_url_name'%}

答案 6 :(得分:0)

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

r=1
for i in range(m):
    for j in range(n): 
        print(arr[max(0,i-r-1):min(i+r+1,m), max(0,j-r-1):min(j+r+1,n)])

因此,它给您一个错误。

答案 7 :(得分:0)

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

<link href="{% static 'css/semantic.min.css' %}" rel="stylesheet">
  • 检查它是否正确地用引号括起来
  • 检查开始和结束括号
  • 检查标签是否正确关闭