通过模板标签提供捕获的URL参数时遇到了问题。我有一个带有捕获参数的URL调度,该调度将移交给另一个include()
没有捕获参数的URL调度:
nodemanager.urls: url(r'^(?P<node_id>\d+)/rank/', include('ranking.urls')),
排名网址: url(r'^setup$', views.setup, name='setup'),
我{% url 'setup' node_id=node.id %}
在我的模板中使用它创建了错误:
/ stage1 / node / 5 / rank / setup处的TypeError
setup()得到了意外的关键字参数'node_id'
如果我取出关键字参数并仅使用:{% url 'setup' %}
,则登陆页面无法加载,并且出现了(可预测的)错误:
/ stage1 /处的NoReverseMatch
找不到带有参数'()'和关键字参数'{}'的'setup'。1个尝试过的模式:['stage1 / node /(?P \ d +)/ rank / setup $']
我知道我需要提供参数node_id
以正确反转URL。但是,我的排名应用程序中的命名url“设置”没有任何参数,但是包含它的URL(在nodemanager应用程序中)却没有任何参数。
如何node_id
使用指向的模板标签stage1/node/5/rank/setup
(即某种形式)正确传递关键字参数{% url 'setup' ... %}
。我可以这样做吗?
让我知道是否需要发布更多上下文代码;我试图包括(我认为)是相关的部分。
原始错误不是由于URL反向引起的,而是在实际调用视图时发生的。这可能是因为您尚未声明它采用node_id参数。应该是这样的:
def setup(request, node_id):
...
解决此问题后,原始的url标签语法应该可以使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句