DjangoProject / students /views.py
school44s's picture
Upload 36 files
c5b63b4 verified
Raw
History Blame Contribute Delete
3.6 kB
from django.shortcuts import render, redirect, get_object_or_404
from django.contrib import messages
from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response
from .models import Student
from .serializers import StudentSerializer
@api_view(['GET'])
def student_list(request):
students = Student.objects.all()
serializer = StudentSerializer(students, many=True)
return Response(serializer.data)
@api_view(['POST'])
def student_create(request):
serializer = StudentSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
@api_view(['GET', 'PUT', 'PATCH'])
def student_detail(request, pk):
try:
student = Student.objects.get(pk=pk)
except Student.DoesNotExist:
return Response({'error': 'Student not found'}, status=status.HTTP_404_NOT_FOUND)
if request.method == 'GET':
serializer = StudentSerializer(student)
return Response(serializer.data)
elif request.method in ['PUT', 'PATCH']:
serializer = StudentSerializer(student, data=request.data, partial=(request.method == 'PATCH'))
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
@api_view(['DELETE'])
def student_delete(request, pk):
try:
student = Student.objects.get(pk=pk)
except Student.DoesNotExist:
return Response({'error': 'Student not found'}, status=status.HTTP_404_NOT_FOUND)
student.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
def student_list_ui(request):
students = Student.objects.all()
return render(request, 'students/student_list.html', {'students': students})
def student_create_ui(request):
if request.method == 'POST':
name = request.POST.get('name')
email = request.POST.get('email')
age = request.POST.get('age')
course = request.POST.get('course')
try:
Student.objects.create(name=name, email=email, age=int(age), course=course)
messages.success(request, 'Student added successfully.')
return redirect('students:student-list-ui')
except Exception as e:
messages.error(request, f'Error: {e}')
return render(request, 'students/student_form.html', {'title': 'Add Student'})
def student_update_ui(request, pk):
student = get_object_or_404(Student, pk=pk)
if request.method == 'POST':
student.name = request.POST.get('name')
student.email = request.POST.get('email')
student.age = int(request.POST.get('age'))
student.course = request.POST.get('course')
try:
student.save()
messages.success(request, 'Student updated successfully.')
return redirect('students:student-list-ui')
except Exception as e:
messages.error(request, f'Error: {e}')
return render(request, 'students/student_form.html', {'title': 'Edit Student', 'student': student})
def student_delete_ui(request, pk):
student = get_object_or_404(Student, pk=pk)
if request.method == 'POST':
student.delete()
messages.success(request, 'Student deleted successfully.')
return redirect('students:student-list-ui')
return render(request, 'students/student_confirm_delete.html', {'student': student})