命名 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 中的语法改变