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

Django模板中{% url %}标签传递变量至href失败的问题排查

问题原因及解决方法

核心错误

你在模板的url标签里错误地用{{x}}包裹了变量,Django模板标签内部直接使用变量名即可,不需要额外的模板变量语法。另外a标签的属性写法也有问题,target='_blank'不该放在class属性里。

修正步骤

1. 修正模板中的URL生成代码

把模板里的a标签代码改成这样:

{% for x in list_countries %}
    <li>
      <a href="{% url 'some-name-url' x %}" target="_blank">{{ x }}</a><br>
    </li>
{% endfor %}
  • 去掉url标签里的{{}},直接传入变量x
  • 把target='_blank'从class属性中分离出来,作为独立的HTML属性

2. 修正视图中获取参数的代码

ItemDetail视图里,你需要从kwargs中获取名为x的参数,而不是'str':

class ItemDetail(TemplateView):
    model = None
    template_name = 'app/template2.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        # 从kwargs中获取URL路径里的x参数
        countries_name = kwargs.get('x')
        # 后续可以用countries_name做逻辑处理,比如获取对应城市列表
        return context

3. 验证上下文传递(可选)

确保SomeViewOne视图正确把国家列表传入模板上下文,比如补充代码:

class SomeViewOne(TemplateView):
    model = None
    template_name = 'app/template1.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        # 假设这里是你的国家列表数据
        context['list_countries'] = ['法国', '波兰', '德国']
        return context

这样修改后,点击国家名称就能正确跳转到对应URL,ItemDetail视图也能获取到传递的国家名称变量了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 02:10:29