Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hootnot/django-postcodepy-proxy
Django proxy app to get information from postcode.nl API
https://github.com/hootnot/django-postcodepy-proxy
django postcode python
Last synced: 24 days ago
JSON representation
Django proxy app to get information from postcode.nl API
- Host: GitHub
- URL: https://github.com/hootnot/django-postcodepy-proxy
- Owner: hootnot
- License: mit
- Created: 2014-12-05T13:19:54.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2016-09-13T05:38:42.000Z (over 8 years ago)
- Last Synced: 2024-09-18T00:31:14.275Z (3 months ago)
- Topics: django, postcode, python
- Language: Python
- Size: 38.1 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Django Postcode Proxy
=========================[![Build Status](https://travis-ci.org/hootnot/django-postcodepy-proxy.svg?branch=master)](https://travis-ci.org/hootnot/django-postcodepy-proxy)
[![Documentation Status](https://readthedocs.org/projects/django-postcodepy-proxy/badge/?version=latest)](http://django-postcodepy-proxy.readthedocs.org/en/latest/?badge=latest)
[![PyPI version](https://badge.fury.io/py/django-postcodepy-proxy.svg)](http://badge.fury.io/py/django-postcodepy-proxy)
[![Code Health](https://landscape.io/github/hootnot/django-postcodepy-proxy/master/landscape.svg?style=flat)](https://landscape.io/github/hootnot/django-postcodepy-proxy/master)
[![Coverage Status](https://coveralls.io/repos/github/hootnot/django-postcodepy-proxy/badge.svg?branch=master)](https://coveralls.io/github/hootnot/django-postcodepy-proxy?branch=master)Simple proxy class to integrate Dutch 'postcode/huisnr' address verification in your Django application.
This is done using the postcode.nl REST-API at [https://api.postcode.nl](https://api.postcode.nl). For documentation
regarding API endpoints also check this url.The API also provides an endpoint for information validation, enrichment and fraude risk check.
Beside this documentation, the complete documentation of this software is available at
[http://django-postcodepy-proxy.readthedocs.org](http://django-postcodepy-proxy.readthedocs.org/en/latest/?badge=latest).Supported versions of Python and Django :
| | **Py 2.7** | **Py 3.4** | **Py 3.5** |
| :------------: | :--------: | :--------: | :--------: |
| **Django 1.8** | YES | YES | YES |
| **Django 1.9** | YES | YES | YES |---
Install
=========$ pip install django-postcodepy-proxy
Quick start
-----------------1. Add 'postcodepy_proxy' to your INSTALLED_APPS setting like this::
INSTALLED_APPS= (
...
'postcodepy_proxy',
)2. Add the config part for the proxy::
POSTCODEPY = {
"AUTH" : {
"API_ACCESS_KEY" : "",
"API_ACCESS_SECRET" : "",
},
}In your app ...
================Derive a class from the *PostcodepyProxyView* class and implement your own logic like the 2 simple examples below for HTML and JSON rendering.
## Simple HTML rendering
from django.shortcuts import render# Create your views here.
from postcodepy_proxy.views import PostcodepyProxyView
from postcodepy import postcodepyclass PCDemoHTMLView(PostcodepyProxyView):
template_name = "postcodeproxy.html"
def get(self, request, *args, **kwargs):
rv = super(PCDemoHTMLView, self).get(request, *args, **kwargs)
return render(request, self.template_name, rv)## JSON rendering
Most likely is that you want JSON rendering for XHR-io in your application. Implement exception-handling that suits your needs.
from django.http import HttpResponse
from postcodepy.postcodepy import PostcodeError
import jsonclass PCDemoJSONView(PostcodepyProxyView):
def get(self, request, *args, **kwargs):
rv = None
try:
rv = super(PCDemoJSONView, self).get(request, *args, **kwargs)
except PostcodeError, e:
# Pass the exceptioninformation as response data
rv = e.response_datareturn HttpResponse( json.dumps(rv), content_type="application/json")
## Signal Check
Use the SignalProxyView to integrate the Signal API in your application.
from postcodepy_proxy.views import SignalProxyView
from postcodepy_proxy.signalapi import SignalRequestData
from django.http import HttpResponse
from postcodepy.postcodepy import PostcodeError
import jsonclass PCSignalJSONView(SignalProxyView):
def post(self, request, *args, **kwargs):
"""
perform the Signal lookup via the API-call
"""
rv = None
try:
# Create a structure representing a valid signal-api-request,
# as specified at api.postcode.nl
sar = SignalRequestData(request.POST)()
if 'csrfmiddlewaretoken' in sar:
del sar['csrfmiddlewaretoken']
rv = super(PCSignalJSONView, self).get(request, sar=sar, **kwargs)
except PostcodeError, e:
# Pass the exceptioninformation as response data
rv = e.response_data
return HttpResponse(json.dumps(rv, indent=4), content_type="application/json")## Route the requests
# Postcode urls
url(r'^jsonpostcode/(?P[\d]{4}[a-zA-Z]{2})/(?P[\d]+)/$', views.PCDemoJSONView.as_view()),
url(r'^jsonpostcode/(?P[\d]{4}[a-zA-Z]{2})/(?P[\d]+)/(?P[A-Za-z]+)/$', views.PCDemoJSONView.as_view()),
# Signal urls
# signal.html with some form that enables you to post the information for the request via AJAX/JSON to
# the jsonsignal url and fetch the response
url(r'^signal/$', TemplateView.as_view(template_name="signal.html")),
url(r'^jsonsignal/$', views.PCSignalJSONView.as_view()),