【问题标题】:React frontend not receiving response from Django HttpResponse after successful request成功请求后反应前端未收到来自 Django HttpResponse 的响应
【发布时间】:2020-06-21 19:49:57
【问题描述】:

我正在开发一个带有 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

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

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

【问题讨论】:

    标签: python django reactjs


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-09-28
      • 1970-01-01
      • 2021-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-16
      • 1970-01-01
      • 2019-03-01
      相关资源
      最近更新 更多