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

如何向Django自定义模板标签函数传值及TemplateSyntaxError报错解决

问题原因与修复方案

总共存在4处错误,按顺序修复即可:

  1. 视图未将car_id传入模板上下文
    你日志中看到的car_id是视图函数的局部变量,并未加入模板上下文字典,模板根本获取不到该值。
    修改views.py的context部分:
def get_car_spare_parts(request, car_id):
    spare_parts = Mileage.objects.filter(car_id=car_id)
    context = {
        'spare_parts': spare_parts,
        'title': 'Список запчастей для',
        'car_id': car_id, # 新增这行,把car_id传入模板
    }
    return render(request, 'mileage/car.html', context)
  1. 自定义模板标签查询字段写错
    Car模型的主键字段名为id,你标签里的查询条件用了不存在的car_id字段,会触发后续查询报错。
    修改mileage_tags.py:
@register.simple_tag
def get_car_info(car_id):
    car = get_object_or_404(Car, id=car_id) # 把car_id=car_id改成id=car_id
    return car
  1. 模板调用标签未传参、未接收返回值
    你当前调用标签时没有传入必填的car_id参数,且没有把标签返回的Car对象存为模板变量,后续的品牌、车型字段依然无法渲染。
    修改car.html对应部分:
{% block body %}
<!-- 调用标签传参,并且把返回的car对象存为模板变量 -->
{% get_car_info car_id as car %}
<h1>{{ title }} {{ car.brand }} {{ car.model_name }} {{ car.age }} г./в.</h1>
 <ol class="list-group list-group-numbered">
    {% for item in spare_parts %}
        <li class="list-group-item"><a href="{% url 'spare_parts_mileages' item.car_id item.spare_part_id %}">{{ item }}</a></li>
    {% endfor %}
 </ol>
{% endblock %}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:06:03