Сериализатор не получает данные, (данные пустые OrderedDict())

обратите внимание, что email здесь в основном имя пользователя, чтобы не запутаться, в serializer.py я отладил данные, но кажется, что user дает мне None

serializer.py

class LoginSerializer(serializers.Serializer):
    def validate(self, data):
        email = data.get("email")
        print(f" email here : {email}")
        password = data.get("password")
        user = authenticate(username=email, password=password)
        print(f"{user} username serializer ")
        print(f"this is data : {data}")
        if user is not None:
            return data
        raise serializers.ValidationError("Incorrect Credentials")

views.py

class LoginView(views.APIView):
    def post(self, request):
        data = serializers.LoginSerializer(data=request.data)
        print(data.is_valid())
        print(data.errors)
        print(f" HEEERE::: {data}")
        if self.request.method == 'POST':
            if data.is_valid():
                auth = authenticate(
                    username=data.validated_data['email'].value, password=data.validated_data['password'].value)
                print(f"auth:: {auth}")
                if auth is not None:
                        login(request, auth)
                        request.session['user_id'] = auth.id
                        print("test")
                        return redirect("/ticket")

                else:
                    return HttpResponse("Invalid Credentials")
            else:
                return HttpResponse("Data not being validated :O")

на стороне фронтенда (React):

import React, { useState } from 'react';
import { Link } from 'react-router-dom';
import { connect } from 'react-redux';
import { login } from '../actions/auth';
import axios from 'axios';

function Login(){
    const [login,setLogin] = useState({
        email: '',
        password:''
    });
    const { email, password } = login;
    function handleChange(e){
        console.log(e.target.value);
        setLogin({
            ...login,
            [e.target.name]: e.target.value
        });

    }
    function handleSubmit(e){
        e.preventDefault();
        axios.post(' http://127.0.0.1:8000/login/', login)
        console.log(login);

    }
    return (
        <div className="container">
        <form method='post' onSubmit={handleSubmit}>
            <h1>Login</h1>
            <label>
                Email:
                <input type='text' name = 'email' value={email} onChange={e=>handleChange(e)} required/>

            </label>
            <label>
                Password:
                <input type='password' name = 'password' value={password} onChange={e=>handleChange(e)} required/>
            </label>
            <button type='submit'>Login</button>
        </form>
            <p className='mt-3'>
                Don't have an Account? <Link to='/signup'>Sign Up</Link>
            </p>
        </div>
    );
};

const mapStateToProps = state => ({
    isAuthenticated: state.auth.isAuthenticated
});


export default Login

обратите внимание, что когда я нажимаю Login я получаю LoginSerializer(data={'email': 'ghazi-z3balawi@outlook.com', 'password': 'ghazi2000'}): на cmd, (посмотрите на print(f" HEEERE::: {data}")) в views.py Я не уверен, как здесь работает сериализатор, любая помощь будет принята с благодарностью.

Ваш сериализатор не определяет никаких полей. Пожалуйста, ознакомьтесь с учебником по DRF.

https://www.django-rest-framework.org/api-guide/serializers/#declaring-serializers

Вернуться на верх