reactjs 是否可以将React POST请求中的数据馈送到Django表单中,而无需在前端呈现该表单?

7eumitmz  于 2023-02-08  发布在  React
关注(0)|答案(1)|浏览(96)

我正在为一个混合的React/Django Web应用开发一个基本的登录表单。我想使用Django表单模型内置的数据清理和验证方法,但是我们的前端是纯React的。登录时一切都正常,但是我将原始的身体数据输入到认证函数中,如图所示。

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)

我的问题是,当我示例化这个form_data的时候,有没有办法把它输入到Django原生的LoginForm中?我不想重新编码Django已经做过的所有输入验证。
我尝试过如下示例化LoginForm:

form = LoginForm(data=form_data)

然后尝试运行form.full_clean(),但似乎不起作用。任何帮助将不胜感激,谢谢!

ux6nzvsh

ux6nzvsh1#

这个问题实际上是呈现的React表单和我定义的Django LoginForm的变量名不同。一个是用户名和密码,另一个是电子邮件和密码。记住这一点,通常使用表单的方法工作得很好!

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)

相关问题