Program 11
Develop a search application in Django using AJAX that displays courses enrolled by a student being searched.
views.py
from django.shortcuts import render
from django.http import HttpResponse
from .models import Student
# Create your views here.
def courselist(request):
if request.method == 'POST':
usn=request.POST['usn']
try:
obj=Student.objects.get(usn=usn)
ans=''
l=obj.courses.all().values()
for x in l:
ans=ans+x['cname']+'<br>'
return HttpResponse(ans)
except Exception:
return HttpResponse('STUDENT USN DOES NOT EXIST/INVALID')
else:
return HttpResponse("method is not post")
def course_page(request):
return render(request, 'course.html')
urls.py
from django.urls import path
from .views import course_page, courselist
urlpatterns = [
path('course', course_page),
path('courselist', courselist, name='courselist'),
]
models.py
from django.db import models
# Create your models here.
class Course(models.Model):
cid=models.CharField(max_length=10, primary_key=True)
cname=models.CharField(max_length=30)
def __str__(self):
return self.cname
class Student(models.Model):
usn=models.CharField(max_length=10, primary_key=True)
name=models.CharField(max_length=30)
sem=models.IntegerField()
courses=models.ManyToManyField(Course)
admin.py
from django.contrib import admin
from .models import Student, Course
# Register your models here.
class StudentAdmin(admin.ModelAdmin):
list_display = ['usn', 'name', 'sem']
list_filter = ['sem']
search_fields = ['usn', 'name']
filter_horizontal = ['courses']
admin.site.register(Student, StudentAdmin)
admin.site.register(Course)
templates/course.html
<!doctype html>
<html>
<body>
<h1>Student Course Enrollment Details</h1>
<div id="message"></div>
<form id="courseenroll" method="POST">
{% csrf_token %}
<label>enter student usn </label>
<input type="text" id="usn" />
<button type="submit">check</button>
</form>
<p id="ans"></p>
</body>
<title>Student Course enrolled details</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(document).ready(function () {
$("#courseenroll").on("submit", function (event) {
event.preventDefault();
$.ajax({
url: '{% url "courselist" %}',
type: "POST",
data: {
usn: $(usn).val(),
csrfmiddlewaretoken: $(
"input[name=csrfmiddlewaretoken]",
).val(),
},
success: function (data) {
$("#ans").html(data);
},
error: function (error) {
$("#message").html(
"<p>An error occurred. Please try again.</p>",
);
},
});
});
});
</script>
</html>