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

Find the Resultant vector of two Vectors With PYTHON!!

NEW ARTICLE:  How to Find the resultant of multiple vectors with Python! Using Python We can do many complex calculations. I learned how to calculate Resultant Vector using a formula with its size and direction in my Physics class. Then, I simply developed a CLI software to calculate the resultant of given two vectors Hope you like it :>) Follow me... Step :1 You need to install python on your computer. No matter what the operating system is you can find the ideal version of python from the official website of Python org And you will need a code editor like VS code and can download it with a simple Google search. (Hope you hate the first step Haha ) Step 2: we use the math module to calculate our resultant vector. The method I used as follows math.radians() : converts degrees to radians math.degrees() : converts radians to degrees math.sqrt()  : find the square root of a number math.atan() :find the tan inverse Step 3: the formula I used to calculate the size of the resultant is as

How to send and receive discord messages with your bot in 2023.

Hello everyone. Welcome back to the Blog of Chamodh today I will show you how to send and receive discord messages with your bot. Before getting started, I remind you that this is the second episode of the series How to make Discord bot in 2023 and if you haven't read the previous one, please read that first as I explain how to create your bot application and add it to a server there. READ:  https://blogofchamodh.blogspot.com/2023/02/how-to-make-your-own-discord-bot-2023.html We don't gonna use virtual environments, IDEs, or any other utility because we can use Replit for our coding purposes.  Let's Get Started. STEP1: Set up Replit It is really simple. Just go to  https://replit.com/~ and sign up if you have never used its service before and create a new Repl. I don't hope to guide you in this as this is an intermediate tutorial. Make sure to select Python as you create the new Repl because we are going to use Python for our back end. STEP 2: Get your token. To run ou