Progs

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 3

Proram 9

1. Create project StudentEnrollmentSystem


2. Create app enrollment
3. Models.py (enrollment)
4.
5. # Create your models here.
6. from django.db import models
7.
8. class Student(models.Model):
9. name = models.CharField(max_length=100)
10. email = models.EmailField(unique=True)
11.
12. def __str__(self):
13. return self.name
14.
15.class Course(models.Model):
16. name = models.CharField(max_length=100)
17. students = models.ManyToManyField(Student, through='Enrollment')
18.
19. def __str__(self):
20. return self.name
21.
22.class Enrollment(models.Model):
23. student = models.ForeignKey(Student, on_delete=models.CASCADE)
24. course = models.ForeignKey(Course, on_delete=models.CASCADE)
25. date_enrolled = models.DateField(auto_now_add=True)
26.
27. def __str__(self):
28. return f"{self.student.name} enrolled in {self.course.name}"

4. admin.py(enrollment)

from django.contrib import admin


from .models import Student, Course, Enrollment

@admin.register(Student)
class StudentAdmin(admin.ModelAdmin):
list_display = ('name', 'email')

@admin.register(Course)
class CourseAdmin(admin.ModelAdmin):
list_display = ('name',)

@admin.register(Enrollment)
class EnrollmentAdmin(admin.ModelAdmin):
list_display = ('student', 'course', 'date_enrolled')
5. views.py (enrollment)

from django.shortcuts import render

# Create your views here.


from django.shortcuts import render, redirect
from django.http import JsonResponse
from .models import Student, Course, Enrollment

def registration_page(request):
courses = Course.objects.all()
students = Student.objects.all()
return render(request, 'registration_page.html', {'courses': courses,
'students': students})

def enroll_student(request):
if request.method == 'POST':
student_id = request.POST.get('student_id')
course_id = request.POST.get('course_id')
student = Student.objects.get(id=student_id)
course = Course.objects.get(id=course_id)
Enrollment.objects.create(student=student, course=course)
return JsonResponse({'status': 'success'})
return JsonResponse({'status': 'failure'})

6. registration_page.html (enrollment/templates)

<!-- registration_page.html -->

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Student Registration</title>
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></
script>
</head>
<body>
<h1>Student Registration</h1>
<form id="registration-form">
<select name="student" id="student">
{% for student in students %}
<option value="{{ student.id }}">{{ student.name }}</option>
{% endfor %}
</select>
<select name="course" id="course">
{% for course in courses %}
<option value="{{ course.id }}">{{ course.name }}</option>
{% endfor %}
</select>
<button type="submit">Enroll</button>
</form>
<div id="enrolled-students">
<!-- Enrolled students will be displayed here -->
</div>

<script>
$(document).ready(function(){
$('#registration-form').submit(function(e){
e.preventDefault();
var studentId = $('#student').val();
var courseId = $('#course').val();
$.ajax({
type: 'POST',
url: '/enroll_student/',
data: {
'student_id': studentId,
'course_id': courseId,
csrfmiddlewaretoken: '{{ csrf_token }}'
},
success: function(response){
if(response.status === 'success'){
alert('Enrollment successful');
// You can update the enrolled students list here
} else {
alert('Enrollment failed');
}
}
});
});
});
</script>
</body>
</html>

You might also like