Django не создает никаких полей для пользователей, созданных вручную

Я создал сайт eccomerce. на нем есть страница регистрации, где пользователи создают свой аккаунт & затем могут заказать что-либо. если я создаю пользователя из панели администратора, то все работает отлично. но если я создаю пользователя из front end моей страницы регистрации с помощью React js, то этот пользователь не может ничего заказать, то есть когда я отправляю данные с помощью fetch django не хранит и не создает никаких данных для этого пользователя. Почему? В чем проблема? Я использую Rest Api в бэкенде & посылаю данные через fetch для отправки данных. но fetch не работает, но не работает, если я использую пользователя, который был создан из панели администратора(./admin). Я делаю что-то неправильно, создавая данные пользователя вручную в моих представлениях???

serializers.py

from pyexpat import model
from rest_framework import serializers
from App.models import *
from django.contrib.auth.models import User


class userSerializers(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = '__all__'


class productSerializers(serializers.ModelSerializer):
    class Meta:
        model = Product
        fields = '__all__'

class customerSerializers(serializers.ModelSerializer):
    class Meta:
        model = Customer
        fields = '__all__'

class orderSerializers(serializers.ModelSerializer):
    class Meta:
        model = Order
        fields = '__all__'

class orderItemSerializers(serializers.ModelSerializer):
    class Meta:
        model = OrderItem
        fields = '__all__'

class shippingAddressSerializers(serializers.ModelSerializer):
    class Meta:
        model = ShippingAddress
        fields = '__all__'

передняя страница регистрации:

import React,{useState} from 'react'
import { useGlobalContext } from './Context'
import {Link, useNavigate} from 'react-router-dom'
import './registration.css'

 const userCreateUrl = 'http://127.0.0.1:8000/api/get-user-data/'

export default function Register() {
  const {loginUser} = useGlobalContext()

  const [username,setUsername] = useState('')
  const [email,setEmail] = useState('')
  const [password1,setPassword1] = useState('')
  const [password2,setPassword2] = useState('')
  const [processing,setProcessing] = useState(false)

  const history = useNavigate()
  
  
  const registerUser = async (e)=>{
    e.preventDefault()
    setProcessing(true)
    fetch(userCreateUrl,{
        method:'POST',
        headers:{
            'Content-Type':'application/json',
        },
        body:JSON.stringify({username:username,email:email,password:password1,password:password2})
    }
    )
    setTimeout(()=>{
        history('/login')
    },3000)
  }

  

  return (
    <div className="registration">
        <img src="https://images-na.ssl-images-amazon.com/images/G/01/gc/designs/livepreview/a_generic_white_10_us_noto_email_v2016_us-main._CB627448186_.png" className='login-logo' alt="Amazon Logo" />
        <div className="login-container">
          <Link to='/' style={{marginBottom:'0rem'}}>Back</Link>
            <h3>Create a new account</h3>
            <form className="form" onSubmit={registerUser}>
                <h5>Username:</h5>
                <input type="text" value={username} name='username' onChange={(e)=>setUsername(e.target.value)} />
                <h5>Email:</h5>
                <input type="email" value={email} name='email' onChange={(e)=>setEmail(e.target.value)} />
                <h5>Password:</h5>
                <input type="password" value={password1} name='password1' onChange={(e)=>setPassword1(e.target.value)} />
                <h5>Password:</h5>
                <input type="password" value={password2} name='password' onChange={(e)=>setPassword2(e.target.value)} />
                <button className="login-btn" type='submit'>{processing ? 'Processing...' : "Sing-Up"}</button>
                
            {/* <p className="terms">By continuing, you agree to Amazon's Conditions of Use and Privacy Notice.</p>
            <div className="new-acc">
                <p className='new'>New to Amazon?</p>
                <hr />
                <br />
                <button className="create-btn">Create Your Amazon Account</button>
            </div> */}
            </form>
        </div>
    </div>
  )
}

Проблема заключается в том, что в представлении getUserData, которое вы используете для создания пользователя, вы не создаете экземпляр модели User, а запрашиваете его с помощью User.objects.get(). Поскольку пользователь еще не существует, представление выдаст ошибку DoesNotExist.

Я не уверен в цели использования модели User и модели Customer. Возможно, лучшим выбором будет создание пользовательской модели .

Если вы все еще хотите использовать модель пользователя по умолчанию, вы должны создать пользователя, используя User.objects.create_user(username=username, password=password), как предложено в документации

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