Django остальные рамки в реестре и логине API - PullRequest
0 голосов
/ 29 февраля 2020

Я новичок в Django

Git Репо

Я создавал API регистрации и входа, и я Я также создал API регистрации, и в этом нет ничего плохого, но я ничего не знал об API входа в систему, поэтому я получил ошибку, на мой взгляд, serializers.py , и есть небольшая ошибка в views.py , пожалуйста, сообщите мне об ошибке, чтобы я знал, где моя ошибка.

File "/Users/sierra/Courses/LoginAPI/form/serializers.py ", строка 14

, если Account.objects.filter (электронная почта = электронная почта, пароль = пароль) .exists ():
TabError: непоследовательное использование пробелов и пробелов в отступеBlockquote

serializers.py

from rest_framework import serializers

from form.models import Account

# from django.contrib.auth.models import User

class LoginSerializer(serializers.ModelSerializer):
    class Meta:
        model = Account
        fields = ['email', 'password',]

        extra_kwargs = {'password': {'write_only': True}}

        if Account.objects.filter(email=email,password=password).exists() :
            return True

        return False

    # def validate(self, data):
    #   password = data.get('password')
    #   email = data.get('email')


    # def username_present(email,password):




class RegistrationSerializer(serializers.ModelSerializer):

    password2 = serializers.CharField(style={'input_type': 'password'}, write_only=True)

    class Meta:
        model = Account
        fields = ['email', 'username', 'password', 'password2']
        extra_kwargs = {
                'password': {'write_only': True},
        }


    def save(self):

        account = Account(
                    email=self.validated_data['email'],
                    username=self.validated_data['username']
                )
        password = self.validated_data['password']
        password2 = self.validated_data['password2']
        if password != password2:
            raise serializers.ValidationError({'password': 'Passwords must match.'})
        account.set_password(password)
        account.save()
        return account

views.py

from django.shortcuts import render
from rest_framework import status
from rest_framework.response import Response
from rest_framework.decorators import api_view
from form.serializers import RegistrationSerializer


@api_view(['POST', ])
def registration_view(request):

    if request.method == 'POST':
        serializer = RegistrationSerializer(data=request.data)
        data = {}
        if serializer.is_valid():
            account = serializer.save()
            data['response'] = 'successfully registered new user.'
            data['email'] = account.email
            data['username'] = account.username
        else:
            data = serializer.errors
        return Response(data)

@api_view(['POST,'])
def login_view(request):

    if request.method == 'POST':
        serializer = LoginSerializer(data=request.data)
        data = {}
        if serializer.is_valid():
            date['response'] = 'User successfully Login'
        else:
            data['response'] = 'You have entered an invalid username or password'
        return Response(data)

Ответы [ 2 ]

0 голосов
/ 29 февраля 2020

В нем указано неверное отступление, попробуйте this , чтобы отформатировать код и запустить снова.

0 голосов
/ 29 февраля 2020

, как говорит ошибка, существует проблема с отступом в строке 14. отступы в python должны выполняться с использованием символов табуляции, а не пробелов, поэтому очистите пробелы перед условием if до самой первой строки и задайте его tabs , пока он не достигнет правильного отступа.

PS: если он все еще выдает ту же ошибку, попробуйте с предыдущей строкой.

...