Creating a URL Shortener service in Python Django
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_urlurl_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.