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

Django按钮跳转传参问题:点击按钮带ID重定向至HTML页面

嘿,你的代码其实已经能实现功能,但有个不够健壮的地方——模板里硬编码了URL路径,这在Django开发里不是最佳实践,后续如果修改URL配置的话,所有硬编码的链接都得手动更新,太麻烦了。下面给你调整成更规范的做法:

第一步:优化模板中的URL生成

Django推荐用{% url %}模板标签来反向生成URL,只需要引用你在urls.py里定义的URL名称(name='aprovado'这类),这样哪怕以后改URL路径,模板里的链接会自动适配。另外你第二个<a>标签没闭合,顺便帮你修正了:

{% load i18n admin_urls %}
{% block object-tools-items %}
<li>
    <a href="{% url 'aprovado' instance.id %}">{% trans "Aprovado" %}</a>
</li>
<li>
    <a href="{% url 'reprovado' instance.id %}">{% trans "Não aprovado" %}</a>
</li>
{% endblock %}

第二步:优化视图的对象查询

你现在用Projeto.objects.get(id=id),如果找不到对应ID的对象会直接抛出异常,导致服务器500错误。换成get_object_or_404会更友好,它会返回标准的404页面:

from django.shortcuts import render, get_object_or_404
from .models import Projeto

def Aprovado(request, id):
    obj = get_object_or_404(Projeto, id=id)
    context = { "object": obj }
    return render(request, "dpo/imprimir/aprovado.html", context)

def Reprovado(request, id):
    obj = get_object_or_404(Projeto, id=id)
    context = { "object": obj }
    return render(request, "dpo/imprimir/reprovado.html", context)

额外小建议(可选)

按照Python的PEP8规范,函数名建议用蛇形命名法(小写+下划线),所以可以把Aprovado改成aprovado,Reprovado改成reprovado,记得同步修改urls.py里的视图引用哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:07:20