Можно ли передать данные из React POST запроса в форму Django без рендеринга этой формы на фронтенде?

Я работаю над базовой формой входа в систему для гибридного веб-приложения React/Django. Я хотел бы использовать встроенные методы очистки и проверки данных Django LoginForm, но наш фронтенд - чистый React. Все работает в плане входа в систему, но я передаю необработанные данные тела в функцию authenticate, как показано здесь.

def login_view(request):
    if request.method == "POST":
        form_data = json.loads(request.body.decode('utf-8'))
        user = authenticate(request, email=form_data["username"], password=form_data["password"])
        if user == None:
            request.session["invalid_user"] = 1
            logging.warning("Login form contains no user")
        login(request, user)

Мой вопрос в том, есть ли способ передать эти данные формы в Django native LoginForm, когда я его инстанцирую? Я бы предпочел не перекодировать всю валидацию ввода, которую Django уже делает.

Я пробовал инстанцировать LoginForm следующим образом:

form = LoginForm(data=form_data)

Попробовал запустить form.full_clean(), но, похоже, это не работает. Любая помощь будет очень признательна, спасибо!

На самом деле проблема заключалась в разнице в именах переменных между отображаемой формой React и Django LoginForm, которую я определил. В одной было имя пользователя и пароль, в другой - email и пароль. С учетом этого обычный способ работы с формами работает отлично!

if request.method == "POST":
    form_data = json.loads(request.body.decode('utf-8'))
    form = LoginForm(data=form_data)
    if form.is_valid():
        email = form.cleaned_data["email"]
        password = form.cleaned_data["password"]
        user = authenticate(request, email=email, password=password)
        if user is not None:
            login(request, user)
Вернуться на верх