You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django模板中如何通过视图传递的变量实现URL反向解析?

Django模板中{% url %}标签使用变量的正确方式

这个问题我之前也碰到过,其实是Django模板标签的语法使用误区导致的,我来给你拆解下解决办法:

问题根源

你原来的写法{% url {{ url }} %}是错误的,因为Django的模板标签(比如{% url %})本身就支持直接引用上下文里的变量,不需要再用{{ }}包裹——模板标签内部已经具备解析上下文变量的能力,嵌套使用反而会触发语法错误。

正确的实现方式

1. 保持视图代码不变

你的视图函数里的上下文传递是完全没问题的:

def foo_bar(request):
    context = { 'url': 'app_name:foo' }
    return render(request, 'template.html', context)

2. 修改模板中的{% url %}调用

直接把上下文变量名作为参数传给{% url %}标签即可,不需要嵌套{{ }}:

<form action="{% url url %}"> ... </form>

扩展:带参数的URL处理

如果你的URL需要传递额外参数(比如app_name:foo需要一个pk参数),也可以直接在标签后追加变量:

  • 视图中传递参数:
def foo_bar(request):
    context = { 
        'url': 'app_name:foo',
        'item_id': 123
    }
    return render(request, 'template.html', context)
  • 模板中调用:
<form action="{% url url item_id %}"> ... </form>

这样就能完美解决"ID expected"的错误啦!

内容的提问来源于stack exchange,提问作者JM Lontoc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:41:04