命名 url 在 django 1.5 和 python 2.7 中不起作用

Posted

技术标签:

【中文标题】命名 url 在 django 1.5 和 python 2.7 中不起作用【英文标题】:named url not working in django 1.5 and 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>

【问题讨论】:

【参考方案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 % 语法。

以上是关于命名 url 在 django 1.5 和 python 2.7 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Django 1.5 版:'url' 需要一个非空的第一个参数。 Django 1.5 中的语法改变

将 url 标签迁移到 django 1.5

django系列3.1--url的命名和反向解析

Django 和 urls.py:如何通过命名 url 进行 HttpResponseRedirect?

django URL反向解析和命名空间

Django命名空间app_name和namespace