Issue
i am a beginner
i am trying to do a post request to get the coer_id and password from the client and then i am trying to check whether they exists in database or not .i am enable to perform it.it will be really helpful if you can tell me how i can correct it or do it .
can you tell me other ways to perform this kind of check .
models.py
from django.db import models
from django.core.validators import RegexValidator
class student_register(models.Model):
name=models.CharField(max_length=100)
father_name=models.CharField(max_length=100,null=True)
bhawan=models.CharField(max_length=100,null=True)
branch=models.CharField(max_length=40,null=True)
coer_id=models.CharField(max_length=12,unique=True,null=True)
phone_regex=RegexValidator(regex=r'^\+?1?\d{9,15}$', message="Phone number must be entered in the format: '+9999999999'. Up to 12 digits allowed.")
phone_number = models.CharField(validators=[phone_regex], max_length=17)
password=models.CharField(max_length=100)
serializer.py
from django.db.models import fields
from rest_framework import serializers
from .models import student_register
class register_serializers(serializers.ModelSerializer):
class Meta:
model = student_register
fields = '__all__'
class login(serializers.ModelSerializer):
class Meta:
model = student_register
fields = ['coer_id','password']
views.py
from rest_framework.response import Response
from rest_framework import viewsets
from .models import student_register
from .serializer import register_serializers
from .serializer import login
from rest_framework.decorators import api_view
from rest_framework import status
class register_view(viewsets.ModelViewSet):
queryset= student_register.objects.all()
serializer_class= register_serializers
@api_view(['POST'])
def check_login(request):
serializer=login(data=request.data)
if serializer.is_valid():
if student_register.objects.filter(coer_id=serializer['coer_id']).exists():
if student_register.objects.filter(password=serializer['password']).exists():
return Response(serializer.data)
else:
return Response(status=status.HTTP_404_NOT_FOUND)
this is the error which i get when i send the json file and post it
Internal Server Error: /login/
Traceback (most recent call last):
File "D:\app_apis\env\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "D:\app_apis\env\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "D:\app_apis\env\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_view
return view_func(*args, **kwargs)
File "D:\app_apis\env\lib\site-packages\django\views\generic\base.py", line 70, in view
return self.dispatch(request, *args, **kwargs)
File "D:\app_apis\env\lib\site-packages\rest_framework\views.py", line 511, in dispatch
self.response = self.finalize_response(request, response, *args, **kwargs)
File "D:\app_apis\env\lib\site-packages\rest_framework\views.py", line 423, in finalize_response
assert isinstance(response, HttpResponseBase), (
AssertionError: Expected a `Response`, `HttpResponse` or `HttpStreamingResponse` to be returned from the view, but received a `<class 'NoneType'>`
Solution
This should work:
def check_login(request):
serializer=login(data=request.data)
if serializer.is_valid():
if student_register.objects.filter(coer_id=serializer['coer_id']).exists():
if student_register.objects.filter(password=serializer['password']).exists():
return Response(serializer.data)
return Response(status=status.HTTP_404_NOT_FOUND) #much better like this
Answered By - Billel Khettab
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.