[英]Django: Passing **kwargs
我有一个关于传递**kwargs
的问题。 在views.py
我正在收集诸如order_id
等数据。此数据正从我称为ChargeManager
地方传递到收费功能。 对于每场def
我目前都在传递小矮人。 但是,我希望找到一种方法,只需在views.py
编写一次即可。 然后我可以使用**kwargs
收集数据并传递它们。 但是,无论我在尝试什么,我都在努力使其正常运行。 你有什么想法吗?
我希望它如何工作的示例:
1)
paid = instance.charge(order_id=session_order_id, total=total, token=token)
2) models.py
:
TransactionProfile
def charge(self, **kwargs):
return Charge.objects.stripe_charge(self, order_id, total, token)
3) models.py
:
ChargeManager
def stripe_charge(self, **kwargs):
print(order_id)
目前,我必须这样做:
views.py
paid = instance.charge(order_id=session_order_id, total=total, token=token)
models.py
def charge(self, order_id, total, token):
return Charge.objects.stripe_charge(self, order_id, total, token)
models.py
:
TransactionProfile
def charge(self, order_id, total, token):
return Charge.objects.stripe_charge(self, order_id, total, token)
models.py
:
ChargeManager
def stripe_charge(self, transaction_profile, order_id, total, token):
如果您的函数接受kwargs,则可以使用相同的kwargs调用另一个方法:
def charge(self, **kwargs):
return Charge.objects.stripe_charge(self, transaction_profile=self, **kwargs)
如果您的stripe_charge
方法仅接受kwargs
,则不能再使用print(order_id)
。 您必须从kwargs
获取它:
def stripe_charge(self, **kwargs):
print(kwargs['order_id'])
我不确定是否会鼓励您使用像这样的**kwargs
。 当我看到方法def charge(self, order_id, total, token):
立即清楚如何调用它。 def charge(self, **kwargs)
不太清楚。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.