Python - Django Simple Submit Form With Ajax

In this tutorial we will create a Simple Submit Form With Ajax. Django is a open source web application framework and it is a set of components that helps you to develop websites faster and easier. By using Django the components are already built you just need to modify and assign them for your need. So let's now do the coding...

Getting Started

First you will have to download & install the Python IDLE's, here's the link for the Integrated Development And Learning Environment for Python https://www.python.org/downloads/. After Python IDLE's is installed, open the command prompt then type "pip install Django", and hit enter. tut1 Wait for the django to be downloaded and installed at the same time. Then After that type "python -m django version" and hit enter to check if django is installed and what version of django is. tut2

Creating the App

After django is set we will now create the web app. While your in the command prompt cd to the directory you want to save the app, then type "django-admin startproject server" and hit enter. A new folder will be created on the directory named 'server'. tut3

Running The Server

After creating the project, cd to the newly created directory, then type "manage.py runserver" and hit enter to start the server running. The "manage.py" is a command of django-admin that utilize the administrative tasks of python web framework. Here is the image of python web server: tut4 Note: Type '127.0.0.1:8000' in the url browser to view the server. When there is code changes in the server just (ctrl + C) to command prompt to stop the server from running, then start again to avoid errors.

Creating The Website

This time will now create the web app to display the web models. First locate the directory of the app via command prompt cd, then type "manage.py startapp ajax" and hit enter. A new directory will be created named "ajax". tut5

Setting up The URL

This time will now create a url address to connect the app from the server. First Go to server directory, then open urls via Python IDLE's or any text editor. Then import "include" module beside the url module and import additional module to make a redirect url to your site "from . import views". After that copy/paste the code below inside the urlpatterns.
  1.  url(r'^$', views.index_redirect, name="index_redirect"),
  2.  url(r'^ajax/', include("ajax.urls")),
It will be look like this:
  1. from django.conf.urls import url, include
  2. from django.contrib import admin
  3. from . import views
  4.  
  5. urlpatterns = [
  6.     url(r'^$', views.index_redirect, name="index_redirect"),
  7.     url(r'^ajax/', include("ajax.urls")),
  8.     url(r'^admin/', admin.site.urls),
  9. ]
Then after that create a view that will catch the redirect url. To do that create a file "views.py" then copy/paste the code below and save it as "views.py".
  1. from django.shortcuts import redirect
  2.  
  3. def index_redirect(request):
  4.     return redirect('/ajax/')

Creating The Path For The Pages

Now that we are all set we will now create a path for the web pages. All you have to do first is to go to ajax directory, then copy/paste the code below and save it inside "ajax" directory named 'urls.py' The file name must be urls.py or else there will be an error in the code.
  1. from django.conf.urls import url
  2. from . import views
  3.  
  4. urlpatterns = [
  5.     url(r'^$', views.index, name="index"),
  6.     url(r'^insert$', views.insert, name="insert")
  7. ]

Creating A Static Folder

This time we will create a directory that store an external file. First go to the ajax directory then create a directory called "static", after that create a sub directory called "ajax". You'll notice that it is the same as your main app directory name, to assure the absolute link. This is where you import the css, js, etc directory. To get the jQuery framework download it here https://jquery.com/ For the bootstrap framework you get it from here http://getbootstrap.com/

Creating The Views

The views contains the interface of the website. This is where you assign the html code for rendering it to django framework and contains a methods that call a specific functions. To do that first open the views.py, the copy/paste the code below.
  1. from django.shortcuts import render, redirect
  2. from .models import Member
  3. # Create your views here.
  4. def index(request):
  5.     return render(request, 'ajax/index.html')
  6.  
  7. def insert(request):
  8.     member = Member(firstname=request.POST['firstname'], lastname=request.POST['lastname'], age=request.POST['age'], address=request.POST['address'])
  9.     member.save()
  10.     return redirect('/')

Creating The Models

Now that we're done with the views we will then create a models. Models is module that will store the database information to django. To do that locate and go to ajax directory, then open the "models.py" after that copy/paste the code.
  1. from django.db import models
  2.  
  3. # Create your models here.
  4.  
  5. class Member(models.Model):
  6.     firstname = models.CharField(max_length=40)
  7.     lastname = models.CharField(max_length=40)
  8.     age = models.CharField(max_length=40)
  9.     address = models.CharField(max_length=40)
  10.  
  11.     def __str__(self):
  12.         return self.firstname + " " + self.lastname
After the Models are created go to "admin.py", then copy and paste the code below
  1. from django.contrib import admin
  2. from .models import Member
  3. # Register your models here.
  4.  
  5. admin.site.register(Member)
This block of code will display the details of data in the database called "Member".

Registering The App To The Server

Now that we created the interface we will now then register the app to the server. To do that go to the web directory, then open "settings.py" via Python IDLE's or any text editor. Then copy/paste this script inside the INSTALLED_APP variables 'web'. It will be like this:
  1. INSTALLED_APPS = [
  2.     'ajax',
  3.     'django.contrib.admin',
  4.     'django.contrib.auth',
  5.     'django.contrib.contenttypes',
  6.     'django.contrib.sessions',
  7.     'django.contrib.messages',
  8.     'django.contrib.staticfiles',
  9. ]

Creating The Mark up Language

Now we will create the html interface for the django framework. First go to ajax directory, then create a directory called "templates" and create a sub directory on it called ajax. base.html
  1. <!DOCTYPE html>
  2. <html lang="en">
  3.     <meta charset="UTF-8" name="viewport" content="width=device-width, initial-scale=1">
  4.     {% load static %}
  5.     <link rel="stylesheet" type="text/css" href="{% static 'ajax/css/bootstrap.css' %}"/>
  6. </head>
  7.     <nav class="navbar navbar-default">
  8.         <div class="container-fluid">
  9.             <a class="navbar-brand" href="https://sourcecodester.com">Sourcecodester</a>
  10.         </div>
  11.     </nav>
  12.     <div class="col-md-3"></div>
  13.     <div class="col-md-6 well">
  14.         <h3 class="text-primary">Python - Django Simple Submit Form With Ajax</h3>
  15.         <hr style="border-top:1px dotted #000;"/>
  16.         {% block body %}
  17.         {% endblock %}
  18.     </div>
  19. </body>
  20. <script src = "{% static 'ajax/js/jquery-3.2.1.js' %}"></script>
  21. <script src = "{% static 'ajax/js/script.js' %}"></script>
  22. </html>
Save it as "base.html" inside the ajax directory "sub directory of templates". index.html
  1. {% extends 'ajax/base.html' %}
  2. {% block body %}
  3.     <form method="POST">
  4.         {% csrf_token %}
  5.         <div class="form-group">
  6.             <label>Firstname</label>
  7.             <input type="text" class="form-control" id="firstname"/>
  8.         </div>
  9.         <div class="form-group">
  10.             <label>Lastname</label>
  11.             <input type="text" class="form-control" id="lastname"/>
  12.         </div>
  13.         <div class="form-group">
  14.             <label>Age</label>
  15.             <input type="text" class="form-control" id="age"/>
  16.         </div>
  17.         <div class="form-group">
  18.             <label>Address</label>
  19.             <input type="text" class="form-control" id="address" />
  20.         </div>
  21.         <br />
  22.         <div class="form-group">
  23.             <button type="button" id="btn_submit" class="btn btn-primary form-control">Submit</button>
  24.         </div>
  25.     </form>
  26. {% endblock %}
Save it as "index.html" inside the ajax directory "sub directory of templates".

Creating The Ajax Script

Now then we will create the ajax script that we will be implementing in Django. First thing to do is simply go to ajax directory then go to 'static/ajax' select "js" and create a file called "script.js", and after that copy/paste the code below.
  1. $(document).ready(function(){
  2.     $('#btn_submit').on('click', function(){
  3.         $firstname = $('#firstname').val();
  4.         $lastname = $('#lastname').val();
  5.         $age = $('#age').val();
  6.         $address = $('#address').val();
  7.  
  8.         if($('#firstname').val() == "" || $('#lastname').val() == "" || $('#age').val() == "" || $('#address').val() == ""){
  9.             alert("Please fill up the required field");
  10.         }else{
  11.             $.ajax({
  12.                 type: "POST",
  13.                 url : "insert",
  14.                 data: {
  15.                     firstname: $firstname,
  16.                     lastname: $lastname,
  17.                     age: $age,
  18.                     address: $address,
  19.                     csrfmiddlewaretoken: $('input[name=csrfmiddlewaretoken]').val()
  20.                 },
  21.                 success: function(){
  22.                     alert("Saved Data!");
  23.                     $('#firstname').val('');
  24.                     $('#lastname').val('');
  25.                     $('#age').val('');
  26.                     $('#address').val('');
  27.                 }
  28.             });
  29.         }
  30.  
  31.     });
  32. });

Migrating The App To The Server

Now that we done in setting up all the necessary needed, we will now then make a migration and migrate the app to the server at the same time. To do that open the command prompt then cd to the "server" directory, then type "manage.py makemigrations" and hit enter. After that type again "manage.py migrate" then hit enter. tut6 Now try to run the server again, and see if all things are done. There you have it we successfully created a Simple Submit Form With Ajax. I hope that this simple tutorial help you for what you are looking for. For more updates and tutorials just kindly visit this site. Enjoy Coding!!!

Add new comment