Skip to main content

Django Deep Link

Coverage

Overview

Simple app to get mobile app deep linking in place with basic tracking.

Quickstart

Install Django Deep Link::

python3 -m pip install django-deep-link

Settings

To enable django_deep_link in your project you need to add it to INSTALLED_APPS in your projects settings.py file:

INSTALLED_APPS = (
    ...
    'django_deep_link',
    ...
)

Add Django Deep Link's URL patterns:

from django_deep_link import urls as django_deep_link_urls


urlpatterns = [
    ...
    path(r"", include(django_deep_link_urls, namespace='django-deep-link')),
    ...
]

Provide Your Own IP Geodata Handler

import requests
from django.core.cache import cache

def get_ip_geodata(ip_address):
    """Use 3rd party API to obtain Geodata from a given IP."""
    if cache.get(ip_address):
        return cache.get(ip_address)

    params = {}
    r = requests.get(f"https://domain.com/{ip_address}", params=params)
    r.raise_for_status()
    cache.set(ip_address, r.json(), 60*60*24)  # 24 hrs
    return r.json()

The IP geodata handler must also be configured in your settings, using the IP_GEO_HANDLER setting key. For example:

DEEP_LINK = {
    'IP_GEO_HANDLER': 'my_project.my_app.utils.get_ip_geodata'
}

If not specified, the 'IP_GEO_HANDLER' setting defaults to the geodata provided by Deep Link, which leverages IP Stack:

DEEP_LINK = {
    'IP_GEO_HANDLER': 'django_deep_link.helpers.ip.get_ip_geodata'
}

Local Development

make env
make pip_install
make migrations
make migrate
make superuser
make serve

or simply make from_scratch

  • Visit http://127.0.0.1:8000/admin/ for the Django Admin

Testing

make pytest
make coverage
make open_coverage

Issues

If you experience any issues, please create an issue on Bitbucket.

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.3.1] - 2024-04-10

  • Added test coverage

[0.3.0] - 2023-06-23

  • New packaging method using pyproject.toml
  • Fresh migrations
  • Moved model_utils to mixins.py

[0.2.6] - 2021-08-04

Fixed

  • Added missing migrations.

[0.2.5] - 2021-07-29

Changed

  • Removed print statement
  • Moved get_querystring_as_dict into helpers

[0.2.4] - 2021-07-29

Added

  • Capture query params in visit

[0.2.3] - 2021-07-29

Changed

  • Don't assume url pattern

[0.2.2] - 2021-07-29

Added

  • Link to mobile and desktop app stores.

Fixed

  • Broken app store links in app listing

[0.1.0] - 2021-07-23

  • First release on PyPI.

Metadata

Release files for django-deep-link 0.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-deep-link 0.3.1
File Size Uploaded
django-deep-link-0.3.1.tar.gz 19.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-deep-link 0.3.1
File Interpreter ABI Platform
django_deep_link-0.3.1-py3-none-any.whl Python 3 none any Details

Total release size: 39.5 kB

Release history Release notifications | RSS feed

This release

0.3.1 This release

2 release files

0.3.0

1 release file

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page