django 参数通过获取在形成直接 url 时不起作用

Posted

技术标签:

【中文标题】django 参数通过获取在形成直接 url 时不起作用【英文标题】:django parameter via get not working while forming direct url 【发布时间】:2019-01-14 09:10:32 【问题描述】:

基本网址:

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>

当我点击按钮时,我在浏览器中得到的网址为:

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(见图)但为什么我没有得到预期的结果?

【问题讨论】:

【参考方案1】:

当通过 GET 提交表单时,表单中的值将作为查询字符串发送。这覆盖action URL 中的任何查询字符串。例如,请参阅this SO answer。

您应该将您的值作为隐藏输入放在表单本身中。

<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>

【讨论】:

谢谢你澄清事情先生!

以上是关于django 参数通过获取在形成直接 url 时不起作用的主要内容,如果未能解决你的问题,请参考以下文章

vue中如何不通过路由直接获取url中的参数

django url中的name参数怎么理解

怎么在django中获取URL上的参数

Django请求与响应

Django之URL反向解析

如何在 Django 的 URL 匹配中获取中文参数