django url 模板标签的问题,% url %

Posted

技术标签:

【中文标题】django url 模板标签的问题,% url %【英文标题】:Problems with django url template tag, % url %django url 模板标签的问题,% url % 【发布时间】:2011-10-22 18:02:59 【问题描述】:

您好,我正在尝试将不同的网址从我的网站传递到模板中。

我以为可以通过在模板中使用这个来完成

% url myappname.module.views.urlfunction %

但是返回一个错误,说“渲染时捕获AttributeError:'str'对象没有属性'regex'”

我不确定这意味着什么。我按照这个例子url template tag in django template

urlpatterns = patterns('',
url(r'^$', 'myappname.module.views.start'),

这是我在模板中输入的内容

% url myappname.module.views.start %

我也试过这个 url 模式和模板组合没有 avial:

urlpatterns = patterns('',
url(r'^$', 'myappname.module.views.start', name="home"),

% url "home" %

我做错了什么?

谢谢。

【问题讨论】:

您在使用 % url "home" % 时收到错误消息?这是在 Django 模板中调用命名 URL 的正确方法。 是的,我认为这是正确的,这令人沮丧。我收到错误 Caught AttributeError while rendering: 'str' object has no attribute 'regex' 【参考方案1】:

在最后一个例子中,而不是

% url "home" %

试试

% url home %

不带引号

【讨论】:

谢谢你的作品。我明白为什么当我看到的所有示例都使用引号时这是必要的?你有解释吗? 不知道 - 我总是按照我在这里所说的那样使用它,没有任何引号等。 @sequoia: Check out the section on forwards compatibility here. 这已在 Django 1.5 中更改。 url 的名称应该用引号括起来。docs.djangoproject.com/en/1.5/ref/templates/builtins/#url【参考方案2】:

说真的,对于简单的情况,我会考虑在 django 中使用 % url % 方案。它们旨在提供某种您可能永远不会利用的灵活性,并且几乎可以保证它们会浪费您数小时的时间来尝试找出“正确”的方法。

只需使用 action="/login/" 或 action ="/home/",然后将节省的时间花在做有用的事情上,例如编写代码。

【讨论】:

【参考方案3】:

在模板顶部添加以下行:

% load url from future %

它将支持该模式

% url "VIEW_NAME" args... %

【讨论】:

以上是关于django url 模板标签的问题,% url %的主要内容,如果未能解决你的问题,请参考以下文章

Django:URL conf、url 模板标签的最佳实践

Django:URL模板标签中的模型参数

模板 url 标签无法识别 Django 命名的 url

django 模板标签 url 仅在最后一个空 url 模式时有效

是否可以将查询参数传递给 Django % url % 模板标签?

Django:在 URL 模板标签中保留 GET 参数