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),
]