如何在django中将多个参数传递给url
Posted
技术标签:
【中文标题】如何在django中将多个参数传递给url【英文标题】:How to pass more than one parameter to url in django 【发布时间】:2020-09-06 14:13:28 【问题描述】:html 页面有 2 个按钮来处理付款,出于某种原因,我需要将 2 个参数传递给 url。以下是我尝试过的方法,但它不起作用。有人可以在这里帮助我吗??
<a href="% url 'process-payment' order.id button.id %" id = "CashOnDelivery" class="btn btn-warning"> Cash on Delivery</a>
<a href="% url 'process-payment' order.id button.id %" id = "Card" class="btn btn-warning">Pay through Card</a>
views.py
def process_payment(request, order_id, button_id):
if id == CashOnDelivery
# directly take order
return redirect (reverse('update-records', kwargs='order_id': order_id))
else
# process the card payment then update transaction
return redirect (reverse('update-records', kwargs='order_id': order_id))
urls.py
urlpatterns=[
path('payment/<order_id>/<button_id>',views.process_payment, name='process-payment'),
]
【问题讨论】:
您能否至少发布您收到的错误消息? @errorinpersona 错误消息:找不到带有参数“(88,”)的“流程支付”的反向。尝试了 1 种模式:['cart/payment/(?P这是因为你的变量没有定义。
<a href="% url 'process-payment' order.id 'CashOnDelivery' %" id = "CashOnDelivery" class="btn btn-warning"> Cash on Delivery</a>
.
<a href="% url 'process-payment' order.id 'Card' %" id = "Card" class="btn btn-warning">Pay through Card</a>
.
另外,您似乎没有检查正确的 id。
def process_payment(request, order_id, button_id):
if button_id == CashOnDelivery
# directly take order
return redirect (reverse('update-records', kwargs='order_id': order_id))
else
# process the card payment then update transaction
return redirect (reverse('update-records', kwargs='order_id': order_id))```
【讨论】:
为什么? button_id 应该是“CashOnDelivery”或“Card”,对吗?因为发送到 url 的第二个参数与 url 模式path('payment/<order_id>/**<button_id>**
匹配,所以我也在视图中使用了相同的 def process_payment(request, order_id, **button_id**):
您是否在任何地方定义了button.id
变量? URL怎么知道button.id
是什么意思?
我只是错过了这部分 <a href="% url 'process-payment' order.id 'CashOnDelivery' %"
不知道如何将第二个参数传递给 url。现在它工作正常。谢谢你。再改一改if button_id == "CashOnDelivery"
--missed 双引号简单错误。
button_id in views 我将从 -->urlpattern button_id 到 urlpattern 我将从这部分获得 --><a href="% url 'process-payment' order.id 'CashOnDelivery' %"
以上是关于如何在django中将多个参数传递给url的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Django urls.py 中将 url 参数传递给 reverse_lazy
如何在 IE 以外的其他浏览器中将 URL 参数传递给 ClickOnce 应用程序?
如何将三个或多个参数传递给自定义模板标签过滤器 django?