如何验证 Django Oscar 中的帐单地址信息?
Posted
技术标签:
【中文标题】如何验证 Django Oscar 中的帐单地址信息?【英文标题】:How to validate the billing address information in Django Oscar? 【发布时间】:2018-12-22 12:05:18 【问题描述】:如何在我的 Django Oscar 付款详情视图中收集帐单地址信息? 到目前为止,我已经在 github 和方法 handle_place_order_submission() 中阅读了 Django Oscar 的代码:https://github.com/django-oscar/django-oscar/blob/05049733e5c6152e37f7b99d957fd67d825c78b8/src/oscar/apps/checkout/views.py#L442,代码是:
def handle_place_order_submission(self, request):
return self.submit(**self.build_submission())
他们说我应该重写这个方法,然后调用 build_submission。 所以我已经分叉了我的结帐应用程序,然后在 PaymentDetailsView() 下。我编写了一个名为 build_submission 的函数,还从 oscar.apps.payment.forms import BillingAddressForm 导入了 BillingAddressForm()。
def build_submission(self, **kwargs):
submission = super(
PaymentDetailsView, self).build_submission(**kwargs)
submission['billing_address'] = BillingAddressForm(self.request.POST)
return submission
我在 payment_details.html 表单中使用了 billing_address_form 。代码在这里:
<form action="% url 'checkout:preview' %" class="form-stacked" method="POST">
% csrf_token %
<div class="well">
<!--<div class="container form-group" style="margin: 0 auto;text-align: center">-->
billing_address_form
<!--</div>-->
</div>
<br>
<script src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key=" stripe_publishable_key "
data-amount=" order_total_incl_tax_cents "
data-name=" shop_name "
data-locale="auto"
data-currency="cad"
data-description=" basket.num_items items ( order_total.incl_tax|currency )">
</script>
</form>
现在我如何验证帐单地址表单,我应该创建一些单独的方法吗?我是 Oscar 的新手,所以用一些代码回答可能会帮助我更好地理解。 或者有没有其他方法可以从用户那里收集账单地址?
【问题讨论】:
【参考方案1】:我无法使用 javascript
+ google maps services
进行验证。将表单的提交按钮设置为禁用,直到谷歌地图返回地址中有有效地址。
为了向google询问地址的正确性,你必须把这个地址的所有片段放在一起,我的意思是,记住一个完整的地址是由那个表单的几个字段组成的,比如:line1
,line2
、postcode
、country
等...
或者...
您可以在表单的clean
方法中使用Python
+ Python Client for Google Maps Services 进行验证。您必须记住,表单无效,无法为用户设置正确的消息,说明原因。
如果验证失败,您将重定向到哪个页面取决于您。
【讨论】:
以上是关于如何验证 Django Oscar 中的帐单地址信息?的主要内容,如果未能解决你的问题,请参考以下文章