django-17track is an unofficial 17track.com API wrapper for Django.
Install with pip:
$ pip install django-ok-17track
INSTALLED_APPS = [ ... 'track17', ... ]
$ python manage.py migrate
TRACK17_API_KEY - API key for service.
TRACK17_API_KEY_FUNCTION - Custom function to return API key, if you want to store it outside the Django settings.
TRACK17_COUNTRIES_URL - Url to grab countries. Uses https://www.17track.net/en/apicountry.
TRACK17_CARRIERS_URL - Url to grab carriers. Uses https://www.17track.net/en/apicarrier.
Basic example to use:
How to get all countries and carriers:
python managet.py populate_carriers
How to register tracking number and get it's info:
from rest_framework import serializers from track17.services import register_track, get_track_info, get_track_info_as_packages from apps.track17.exceptions import DateProcessingError # try to register tracking number at 17track API try: register_track('tracking_number') except DateProcessingError as exc: raise serializers.ValidationError(str(exc)) # try to fetch an actual info about a tracking number try: response: Dict = get_track_info('tracking_number') except DateProcessingError as exc: raise serializers.ValidationError(str(exc)) accepted_packages = response.get('accepted', ) # return packages info as a list of `PackageEntity` (dataclass instance) objects # in a readable way with a represantion of carriers and countries as Django model instances packages = get_track_info_as_packages(accepted)
Or can use 17track adapter directly:
from track17.track17 import Track17Adapter track17 = Track17Adapter() response = track17.register('number1', 'number2') response = track17.get_track_info('number1', 'number2')