Django遇到这个的坑,你们是怎么解决的?

今天在写项目的时候遇到一个很奇怪的问题,就是从前端接受表单数据的时候,我使用的请求方式的post方式,但是出现了不可描述的问题,详情参看截图:
我用的框架是Django3.2.1

img

img

img

img

问题:
发送请求后数据能到达路由层,也能正确保存数据,但是无返回(也就是我在前端无法看到由后端传会的"注册成功"字样),请问这个问题该如何解决?

这本身并不是问题,首先你需要先get请求【浏览器敲回车就是get请求】,拿到登录的页面,之后在form表单里通过ajax的post去注册。没有第一步get的话,用户怎么注册呢?回到你代码本身register视图里,显然你有也如我刚描述的逻辑实现的,method不是post的话,直接返回的登录表单form-signup.html。

有帮助的话,请点采纳该答案~

不可描述的问题是什么问题

以下内容部分参考ChatGPT模型:


这个问题可能是因为没有在后端返回数据导致的。在Django中,可以使用HttpResponse来返回数据给前端,例如:

from django.http import HttpResponse
import json

def my_view(request):
    # 处理表单提交数据
    # ...

    # 返回数据给前端
    response_data = {'message': '注册成功'}
    return HttpResponse(json.dumps(response_data), content_type='application/json')

在这个例子中,我们首先导入HttpResponse和json模块。然后,在视图函数中处理表单提交数据,并将需要返回给前端的数据放到response_data字典中。最后,使用HttpResponse将response_data转换成JSON格式并返回给前端。同时,需要在HttpResponse的第二个参数中指定content_type为'application/json',以确保返回的数据是JSON格式。

需要注意的是,在前端接收到返回数据后,需要通过JSON.parse()函数将JSON字符串转换成JavaScript对象,才能方便地使用这些数据。例如:

$.ajax({
    type: "POST",
    url: "/register/",
    data: formData,
    success: function(data) {
        var message = JSON.parse(data)['message'];
        alert(message);
    }
});

在这个例子中,我们使用jQuery的$.ajax()函数发送POST请求,并在成功后显示后端返回的消息。其中,JSON.parse()函数将返回的JSON字符串转换成JavaScript对象,并从中获取了'message'字段的值,以显示注册成功的消息。


如果我的建议对您有帮助、请点击采纳、祝您生活愉快