django - django 参数通过获取在形成直接 url 时不起作用
问题描述
基本网址:
path('api/product/',
include(('store.urls', 'store'),
namespace='api-product')),
店铺网址:
path('invoice-pdf-get/',
invoice.InvoiceToPdf.as_view(),
name='invoice-pdf-get'),
HTML:
<html>
<body>
<form method="get" action="{% url 'api-product:invoice-pdf-get' %}?R={{ invoice.invoice_unique_number }}">
<input type="submit" value="Generate PDF">
</form>
</body>
</html>
当我点击按钮时,我在浏览器中得到的 url 为:
http://localhost:8000/api/product/invoice-pdf-get/?
正如预期的那样:
http://localhost:8000/api/product/invoice-pdf-get/?invoice_number=SOMEKEY
虽然如果我通过表单提交隐藏类型输入,我会得到预期的结果
,但我正在阅读:Daniel Roseman SO answer。通过 传递参数GET
。
尽管检查显示了 URL(见图),但为什么我没有得到预期的结果?
解决方案
当通过 GET 提交表单时,表单中的值将作为查询字符串发送。这会覆盖URL中的任何查询字符串action
。例如,请参阅此 SO 答案。
您应该将您的值作为表单本身的隐藏输入。
<form method="get" action="{% url 'api-product:invoice-pdf-get' %}">
<input type="hidden" name="R" value="{{ invoice.invoice_unique_number }}">
<input type="submit" value="Generate PDF">
</form>
推荐阅读
- mysql - mySQL80 错误 1045 (28000)::Access Denied for user@localhost (使用密码: YES)
- c# - 如何使用 LINQ 在列表中找到最大值?
- tls1.2 - 无法与 Apache pulsar 独立集群中的代理建立启用 TLS 的连接
- sql - 选择一行到多行,行有另一个计算
- python - 如何修复'list'对象在Python / Django中没有属性'get'(AttributeError)
- regex - 单元格的 Google 表格解析器
- angular - 数据标签错位在 3D 饼图中
- factory-bot - Rswag 中的 FactoryBot 故障
- kubernetes - 服务在 Kubernetes 中没有响应
- c# - C# - 如何遍历对象的每个属性和值