django-17track is an unofficial 17track.com API wrapper for Django.
Install with pip:
$ pip install django-ok-17track
Update INSTALLED_APPS:
INSTALLED_APPS = [
...
'track17',
...
]
Make migrations
$ 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.
python managet.py populate_carriers
from typing import List, TYPE_CHECKING from rest_framework import serializers from track17.services import register_track, get_track_info, get_track_info_as_packages from track17.exceptions import DateProcessingError if TYPE_CHECKING: from track17.entity import PackageEntity # 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: List['PackageEntity'] = get_track_info_as_packages(accepted)
from track17.track17 import Track17Adapter track17 = Track17Adapter() response = track17.register('number1', 'number2') response = track17.get_track_info('number1', 'number2')