Creating a URL Shortener service in Python Django

Beingana Jim Junior
2 min readAug 8, 2022

URL shorteners have become a popular service on the web. Companies like bitly are making great fortunes from them. But sometimes when you want a custom URL you get to pay for the service. So in this tutorial I am going to show you how to build a URL shortener service in Django.

In this tutorial I expect you to be familiar with templates and forms because i wont cover them but instead i will just show you how to pragmatically build create the service in python code.

Setup

To setup the project, we shall need only one package. django-urlshortner. So lets begin by installing the package using pip. This asumes you have already setup a django project.

pip install django-urlshortner

After you should add the urlshortner app to your INSTALLED_APPS in settings.py

Configuration

INSTALLED_APPS = [
# ....
"urlshortner"
]

Then you migrate the models to your database

python3 manage.py migrate

Lastly add the routes to your URLConf in your urls.py of your project.

url_patterns = [
# ...
path("r/", include("urlshortner.urls")),
]

Now you are good to go.

Usage

The library provides a list of utils to create shortened urls.

To create a short version of a url use the shorten_url function from urlshortner.utils module

# python3 manage.py shell
from urlshortner.utils import shorten_url
url_route = shorten_url(
"https://github.com/jim-junior/django-urlshortner",
is_permanent=False
)
print(url_route)
# >>> 0ee3f0

You can now navigate to you the route that you assigned to urlshortner.urls in your URLConf add the returned value att the end of the url. In this case it would be http://localhost:8000/r/0ee3f0/ and this would redirect you to the right URL

Sometimes you want to create a custom URL. For example you want to create a short link for a blog about your new product and you want a url that is easy to remember. You can add this easily by adding the value argument to the shorten_url function

from urlshortner.utils import shorten_urlurl_route = shorten_url(
"https://myblog.com/blog/2022/10/10/..../my-new-product",
value="NewProduct"
is_permanent=False
)

You can now navigate to https://localhost/r/NewProduct and It will redirect you

Now that you know how to use the package i think you can intergrate it with you project.

Hope this article was helpful. You can git the project a star on Github or if you have any idea to add on you can contribute to its repository. And bythaway I am the Author of this library.

--

--

Beingana Jim Junior

Software Engineer. Open source Dev. Write on Programming. Check out my projects at https://open.cranom.cloud/