【问题标题】:named url not working in django 1.5 and python 2.7命名 url 在 django 1.5 和 python 2.7 中不起作用
【发布时间】:2013-09-01 18:01:07
【问题描述】:

我正在开发自己的博客。一切都很好。我尝试为部署做准备,但没有成功。现在我撤消所有更改,但命名的 url 现在不起作用(它们之前工作得很好): 错误:

未找到带有参数“()”和关键字参数“{}”的“main_page”的反向操作

网址:

urlpatterns = patterns('',
  url(r'^$', main_page, name='main_page'),
  url(r'^blog/', include('blog.blogurls')),
  url(r'^comments/', include('django.contrib.comments.urls')),
)

主页视图:

def main_page(request):
  object_list = Article.objects.all()
  return render_to_response('blog/main_page.html', {'Latest': object_list}

命名的网址用于:

<p><a href="{% url 'main_page' %}">home</a></p>

【问题讨论】:

    标签: python django python-2.7 django-templates django-views


    【解决方案1】:

    {% url 'main_page' %} 替换为{% url main_page %}

    引自 django 1.5 changelog:

    一个值得注意的弃用功能是转向“新式”网址 标签。在 Django 1.3 之前,解释像 {% url myview %} 这样的语法 错误地(Django 认为“myview”是 视图,而不是名为 myview 的模板变量)。 Django 1.3 及更高版本 引入了 {% load url from future %} 语法来引入 更正了 myview 被视为变量的行为。

    这样做的结果是,如果您不使用 {% load url from 未来 %} 在您的模板中,您需要更改标签,如 {% url myview %} 到 {% url "myview" %}。如果您使用 {% load url from 未来 %} 你可以简单地在 Django 1.5 下删除该行

    【讨论】:

    • 成功了。但我不记得模板有任何变化。谢谢
    • 你的模板中有{% load url from future %}吗?
    • 不!未来的网址是什么?
    • 只是想知道,这只是一条有用的行,允许在 django 1.3 和 1.4 中使用 {% url myview %} 语法。
    猜你喜欢
    • 2013-02-13
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 2020-07-10
    • 2012-02-21
    相关资源
    最近更新 更多