首页 > 解决方案 > 成功请求后反应前端未收到来自 Django HttpResponse 的响应

问题描述

我正在开发一个带有 React 前端和 Django 后端的应用程序。

前端请求正在命中后端(并更新数据库),但没有向前端返回响应。我对 Django 和 React 都是新手,所以我无法调试它。

反应前端

var csrftoken = Cookies.get('csrftoken')

let headers = {
   "X-CSRFToken": csrftoken,
   "Content-Type": "application/x-www-form-urlencoded"
 };

const qs = require('qs');
axios.post('/api/thing/new/', qs.stringify({thing_text: thing.thing_text}), {'headers': headers})
  .then((result) => {
    console.log(results)
  });

Django 后端

class ThingForm(ModelForm):
    class Meta:
        model = Thing
        fields = ['thing_text']

def thing_create(request):

    form = ThingForm(request.POST or None)
    if form.is_valid():
        form.save()

    return JsonResponse({'foo':'bar'}) 

我也尝试过回复return HttpResponse(status=204)但无济于事。

这会导致错误,

Uncaught (in promise) ReferenceError: results is not defined

我将其解释为没有任何东西返回到前端(尽管我可能是错的)。同样,我知道后端正在接收请求,因为在数据库中创建了一条记录。

有什么我应该尝试调试的吗?

标签: pythondjangoreactjs

解决方案


你以错误的方式使用 React。Promise 旨在稍后返回结果。到您的承诺被解决或拒绝时。尝试解决承诺。

axios.post('/api/thing/new/', qs.stringify({thing_text: thing.thing_text}), {'headers': headers})
      .then(res=>(
        console.log(res.data)
      ))

推荐阅读