【问题标题】:Django Rest Framework - Bad requestDjango Rest Framework - 错误请求
【发布时间】:2019-11-22 20:58:55
【问题描述】:

我正在尝试从我的前端调用我的 Django 项目的 API 端点。

端点位于 URL /tst/。我需要从该端点检索数据,以便用该数据填充我的页面。

我为此使用了 ajax 请求,但我不断收到错误 400 - BAD REQUEST,但我不知道为什么会发生这种情况,因为 API 端点位于正确的 URL。

function doPoll(){

    $.post('http://localhost:8000/tst/', function(data) {
        console.log(data[0]);
        $('#data').text( data[0].data);
        setTimeout(doPoll, 10);
    });
} 

我的端点视图:

class tstList(generics.ListCreateAPIView):
    queryset = tst.objects.using('screener').all()
    serializer_class = tstSerializer

models.py

 class tst(models.Model):
        ticker = models.CharField(max_length=15)
        Price = models.FloatField()

        def save(self, *args, using=None, **kwargs):
            super(tst, self).save(*args, using='screener', **kwargs)

json 看起来像这样:

{"ticker":["TEST"],"Price":["4847"]}

我在回复中得到了什么:

{"ticker":["This field is required."],"Price":["This field is required."]}

【问题讨论】:

  • 您正在发布到该 URL,但您没有发送任何数据。也许您打算使用$.get
  • 如果您收到 400 BAD REQUEST,请查看响应的正文。它将解释为什么 Django REST 框架拒绝了该请求。
  • @DanielRoseman 你是什么意思?
  • 感谢@Linovia,现在正在调查
  • 正是我所说的。您正在发送 POST。一个帖子用于提交数据到后端,但你不发送任何数据;无论如何你都想检索数据。使用$.get()

标签: javascript python django ajax django-rest-framework


【解决方案1】:

我建议使用 Axios 进行 HTTP 请求调用而不是 ajax。 爱讯:https://github.com/axios/axios

看起来,您必须在端点视图中实现获取请求。

class tstList(generics.ListCreateAPIView):
  queryset = tst.objects.using('screener').all()
  serializer_class = tstSerializer
  
  def get(self, request, *args, **kwargs):
    return self.create(request, *args, **kwargs)

【讨论】: