Django
Learn how to integrate Dub with Django.
1. Prerequisites
To follow this guide, you will need to:
2. Install and initialize the Dub Python SDK
Install
To install the Dub Python SDK, run the following command:
pip install dub
Initialize
Initialize the Dub Python SDK by creating a new instance of the Dub
class.
import os
import dub
from dub.models import operations
from django.http import JsonResponse
d = dub.Dub(
token=os.environ['DUB_API_KEY'],
)
3. Create link
Let’s create a short link using the Dub Python SDK.
def create_link(request):
res = d.links.create(request={
"url": "https://google.com",
})
return JsonResponse({
"short_link": res.short_link
})
Optionally, you can also pass an externalId
field which is a unique identifier for the link in your own database to associate it with the link in Dub’s system.
def create_link(request):
res = d.links.create(request={
"url": "https://google.com",
"external_id": "12345",
})
return JsonResponse({
"short_link": res.short_link
})
This will let you easily update the link or retrieve analytics for it later on using the externalId
instead of the Dub linkId
.
4. Upsert link
Dub Python SDK provides a method to upsert a link – where an existing link is updated if it exists, or a new link is created if it doesn’t. so you don’t have to worry about checking if the link already exists.
def upsert_link(request):
res = d.links.upsert(request={
"url": "https://google.com",
})
return JsonResponse({
"short_link": res.short_link
})
This way, you won’t have to worry about checking if the link already exists when you’re creating it.
5. Update link
Let’s update an existing link using the Dub Python SDK.
You can do that in two ways:
- Using the link’s
linkId
in Dub’s system. - Using the link’s
externalId
in your own database (prefixed withext_
).
# Update a link by its linkId
def update_link(request):
res = d.links.update(link_id="clx1gvi9o0005hf5momm6f7hj", request_body={
"url": "https://google.uk",
})
return JsonResponse({
"short_link": res.short_link
})
# Update a link by its externalId
def update_link(request):
res = d.links.update(external_id="ext_12345", request_body={
"url": "https://google.uk",
})
return JsonResponse({
"short_link": res.short_link
})
6. Retrieve analytics for link
Dub allows you to retrieve analytics for a link using the Dub Python SDK.
# Retrieve the timeseries analytics for the last 7 days for a link
def analytics(request):
res = d.analytics.retrieve(request={
"link_id": "clx1gvi9o0005hf5momm6f7hj",
"interval": "7d",
"group_by": "timeseries",
})
return JsonResponse(res)
Simliarly, you can retrieve analytics for a link using the externalId
field.
# Retrieve the timeseries analytics for the last 7 days for a link
def analytics(request):
res = d.analytics.retrieve(request={
"external_id": "ext_12345",
"interval": "7d",
"group_by": "timeseries",
})
return JsonResponse(res)
7. Examples
Was this page helpful?