Можно ли передать данные из 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)