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
相关产品推荐
相关产品推荐

