我遇到了通过模板标记提供捕获的网址参数的问题。我有一个带有捕获参数的URL调度,该调度传递给另一个没有任何捕获参数的include()
的URL调度:
nodemanager.urls:
url(r'^(?P<node_id>\d+)/rank/', include('ranking.urls')),
ranking.urls:
url(r'^setup$', views.setup, name='setup'),
我在模板中使用{% url 'setup' node_id=node.id %}
会产生错误:
/ stage1 / node / 5 / rank / setup
中的TypeErrorsetup()得到了一个意外的关键字参数&#39; node_id&#39;
如果我取出关键字参数并使用:{% url 'setup' %}
,则登录页面无法加载,我收到(可预测的)错误:
/ stage1 /
的NoReverseMatch反转&#39;设置&#39;参数&#39;()&#39;和关键字参数&#39; {}&#39;未找到。 1个模式&gt;尝试:[&#39; stage1 / node /(?P \ d +)/ rank / setup $&#39;]
我知道我需要提供node_id
的参数才能正确反转网址。但是,名为url&#34; setup&#34;在我的排名应用程序中没有任何参数,但包含它的URL(在nodemanager应用程序中)确实如此。
如何使用指向node_id
的模板标记正确传递stage1/node/5/rank/setup
关键字参数,即{% url 'setup' ... %}
形式的内容。我可以这样做吗?
如果我需要发布更多上下文代码,请告诉我们;我试图包括(我认为)相关的部分。
答案 0 :(得分:0)
原始错误不是由于URL反转,而是在实际调用视图时出现。这可能是因为您尚未声明它采用node_id参数。它应该是这样的:
def setup(request, node_id):
...
修复后,原始网址标记语法应该有效。