2012-07-19 43 views
0

當我去/ blog/tag/1看到第一個現有的tag tag,它呈現tag.html的響應時,我得到一個異常:「捕獲NoReverseMatch渲染時反轉'未找到參數'()'和關鍵字參數'{}'的add-node''。網址命名不能在模板中工作

我在URLs.py像這樣:

url(r'^blog/add_node/$', 'Alpha.Gamma.views.add_node', name='add-node'), 

的Views.py:

def add_node(request): 
    tag = Tag.objects.all() 
    action = reverse("add-node-proc") 
    title = "Submit Article" 

    return render_to_response("blog/add_node.html", add_csrf(request, action=action, title=title, tags=tag, button="Submit Article")) 

模板tag.html有:

<a id="new_node" class="buttont" href="{% url 'add-node' %}">Add new blog post</a> 
<br /> 
<br /> 

我得到的錯誤:

NoReverseMatch while rendering:''add-node''的參數'()'和關鍵字參數'{}'找不到。

它強調了我爲上面的tag.html放置的行。

add_node.html是一個簡單的表單模板。我做錯了什麼,文件說我做的一切都是正確的。

如果我在模板上更改:「url'add-node'」到「url Alpha.Gamma.views.add_node」,一切都會突然發生---爲什麼?我不明白這個Django的URL調度器。

是的我重新啓動了Apache幾次。

+0

嘗試圍繞降引號在模板中添加節點並查看它是否有效。 – 2012-07-19 15:30:57

+0

它通過。但是文檔誤導了我並告訴我使用{%url'arch-summary'1945%} {%url'full-archive'2007%} https://docs.djangoproject.com/zh/dev/topics/http/urls/ – Dexter 2012-07-19 15:50:12

+0

我鼓勵你發送一個錯誤報告:) – 2012-07-19 15:54:36

回答

1

如果您使用的URL標記,請注意你不需要周圍的URL名稱報價:

{% url add-node %}

{% url 'add-node' %}

+0

或者,如果你使用的是Django 1.3或Django 1.4,另一種方法是留下引號,並將'{%load url from future%}'添加到你的模板。請參閱[url標記文檔](https://docs.djangoproject.com/en/1.3/ref/templates/builtins/#url)中有關轉發兼容性的部分。 – Alasdair 2012-07-19 15:41:12

+0

這是我想到的,但我對自己說:「不可能,因爲文檔有:{%url'arch-summary'1945%} {%url'full-archive'2007%}作爲示例。如果正確的方法是不放在引號中,爲什麼要加引號? Django搞砸了文檔嗎? – Dexter 2012-07-19 15:44:05