我有一个django表单,目前检查应用程序可以提供的区域中的邮政编码。我想将它与postcodes.io API端点集成,以检查实际的邮政编码是否有效。
端点如下:
api.postcodes.io/postcodes/:postcode/validate
这是我的表单代码:
from django import forms
class PostCodeForm (forms.Form):
pcode = forms.CharField()
def clean_pcode(self):
permitted = {'gu15','GF34','FG34','BT25'}
pcode = self.cleaned_data['pcode'].lower()
if not pcode[:4] in (permitted):
raise forms.ValidationError("Apologies, but does not currently deliver to you postcode.")
return pcode
我在如何与Django的API端点集成方面遇到困难。任何帮助都非常感谢。
提前致谢。
答案 0 :(得分:0)
你可以用很棒的python包requests来完成。
import requests
def clean_pcode(self):
pcode = self.cleaned_data['pcode'].lower()
url = 'https://api.postcodes.io/postcodes/{}/validate'.format(pcode)
r = requests.get(url)
is_correct = r.json()['result']
if not is_correct:
raise forms.ValidationError("Apologies, but does not currently deliver to you postcode.")
return pcode
当然这是非常基本的,您还应该检查响应代码并处理错误。