Skip to main content

Create a URL Shortener app with Python and Django Part-3

In this part...


This will be the last part of the Create a URL Shortener app with Python and Django Series and if you have not read the last two parts yet please read them before you read this part. 



we have discussed how to set up our virtual environment and start the project and apps in part 1 and learned the logic and some important views in part 2. So it is vital to read them first.

In this part, I will show you how to,
  1. Create the URL patterns
  2. Writing the template.
  3. Write the redirect view

Create the URL patterns.

To handle the URL requests we can create the URL patterns as shown below.

from django.contrib import admin
from django.urls import path
from url_shortener import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('create/', views.create ),
    path('<str:slug>/', views.redirect), #new line
]


views.create uses the views.create that we created in the last part to shorten the URLs. 
We will discuss the other URL paths later in this post.


Writing the Template.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>




<script>
    $(function () {

      $('#input-form').on('submit', function (e) {

        e.preventDefault();

        $.ajax({
          type: 'post',
          url: '/create/',
          data: $('#input-form').serialize(),
          success: function (response) {
            response = window.location.origin+"/"+response
            $(".success").html(
                "<p> URL shortened succesfully: <a href='"+response+"'>"+response+"</p>"
            )

          }
       

        });

      });

    });
  </script>



<form id="input-form" method="post"  action="/">
    {% csrf_token %}
    <div class="success">
       
    </div>
    <input type="url" name="url" id="url">

    <input type="submit" value="submit">
</form>


Here we use ajax requests and a form to shorten the URLs.

Write the Redirect view.

In our app, we have to redirect the user who requests a URL that is made with our app. For instance, if they request, http://127.0.0.1:8000/a/ we have to check if there is a record for the slug "a". if yes we redirect the user to the full URL of the slug and raise a 404 error if there is no record for slug  "a" in the database.  

To get the slug of the shortened URL we have to add this line to our URL patterns list in urls.py.


from django.contrib import admin
from django.urls import path
from url_shortener import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('create/', views.create ),
    path('<str:slug>/', views.redirect),] #new line

Then we can use the slug in the view as shown below.

def redirect(request,slug):
    url = get_object_or_404(Link, slug=slug)

    return HttpResponseRedirect(url.URL)



This three-line view, do the redirecting job.
To use the HttpResponseRedirectmethod and  get_object_or_404, we have to update the import list as shown below. 

That's all and It works as expected.

I am embedding all the files you want to edit in the Django project




Comments

Trending Now

Let's talk about cryptography.

Have you ever heard of cryptography?  People write their diaries every day. For many of them, their diary is one of their best friends to whom they tell their every secret. What happens when someone else finds such a diary? That would freak out the dairy's owner for sure. Also, it might put their lives in danger. Wise men always hide their diaries so no one else finds it.  But legends hide their message so that only they can read what they wrote. So even if the diary is found by someone else, they cannot know the secrets. for example, I wrote this in my diary today.   P dyval h isvn wvza hivba jyfwavnyhwof avkhf Can you understand it? This is just a very primitive level of cryptography yet powerful enough to hide what I wrote from 90% of people. I will discuss this type of cryptography in the next blog post. The human used cryptography from the very beginning to share their messages in secret and conceal their inventions. As you may know, many people tried to find a recip...

Generate all possible phone numbers with Python | Generates Crores of Phone Numbers within minutes.

Recently,  I learned about itertools in python. Especially, about the functions permutations, combinations, and products and I tried to make a script that generates all phone numbers in our country. I bet your phone number is too on the list. let the hack begin!!! First, you need to install itertools in your computer  Simply open your terminal and type                sudo apt-get  install  -y python-more- itertools Then Write the code below from itertools import product file_name = "phonebook.txt" phonebook = open (file_name, 'a' ) prefixes = [ '+9471' ] product_a = product([ '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , '0' ], [ '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , '0' ], [ '1' , '2' , '3' , '4' , '5...