Develop a registration page for student enrollment without page refresh using AJAX
Answer:-
views.py:-
from django.http import HttpResponse from django.shortcuts import render from ap3.models import Course, Student def regaj(request): if request.method == "POST": sid = request.POST.get("sname") cid = request.POST.get("cname") student = Student.objects.get(id=sid) course = Course.objects.get(id=cid) res = student.enrolment.filter(id=cid) if res: return HttpResponse("<h1>Student already enrolled</h1>") student.enrolment.add(course) return HttpResponse("<h1>Student enrolled successfully</h1>") else: students = Student.objects.all() courses = Course.objects.all() return render(request, "regaj.html", {"students": students, "courses": courses})
templates/regaj.html:-
{% load static %} <html> <body> <form method="post" action=""> {% csrf_token %} Student Name <select name="sname" id="sname"> {% for student in students %} <option value="{{ student.id }}">{{ student.student_name }}</option> {% endfor %} </select><br> Course Name <select name="cname" id="cname"> {% for course in courses %} <option value="{{ course.id }}">{{ course.course_name }}</option> {% endfor %} </select><br> <span id="ans"></span> <input type="button" value="Enroll" id="ebtn"> </form> <script src="{% static 'jquery.min.js' %}"></script> <script> $(document).ready(function(){ $("#ebtn").click(function(){ var sname = $("#sname").val(); var cname = $("#cname").val(); $.ajax({ type: "POST", url: "/regaj/", data: { sname: sname, cname: cname, csrfmiddlewaretoken: '{{ csrf_token }}' }, success: function(response){ $("#ans").html(response); } }); }); }); </script> </body> </html>
urls.py:-
from django.contrib import admin from django.urls import path from ap3.views import expr, cbox, regaj, course_search_ajax admin.site.site_header = "My Site Header" admin.site.site_title = "My Site Title" admin.site.index_title = "My Site Index" urlpatterns = [ path('secretadmin/', admin.site.urls), path('expr/', expr), path('cbox/', cbox), path('regaj/', regaj), ]