【问题标题】:Django Rest Framework APIView post data is emptyDjango Rest Framework APIView 发布数据为空
【发布时间】:2017-04-04 03:18:21
【问题描述】:

我正在尝试将 json 数据发布到我的 Django Rest Framework APIView。 当我使用 DRF api 发布表单时一切正常,但是当我尝试使用外部应用程序(在我的情况下为 Angular2)时,request.data 变量为空。

我的 API 视图:

class CreatePaymentView(views.APIView):

    def post(self, request, *args, **kwargs):
        print(request.data)
        return None

我的网址:

url(r'payment/create', views.CreatePaymentView.as_view(), name='CreatePayment'),

我的 Angular2 帖子:

createPayment(): Observable<any> {
     let body = JSON.stringify({test_data: 'whatever'});

    let headers = new Headers({
      'Content-Type': 'application/json',
      'X-CSRFToken': this.cookiesService.csrftoken,
      'Authorization': `Token ${this.logged.user.token}`
    });
    let options = new RequestOptions({ headers: headers });
     return this.http.post(environment.server_url_api + 'payment/create/', body, options)
        .map(response => {
          return response;
        });
  }

我的应用程序的所有其他帖子都运行良好,但我所有其他视图都是 DRF 模型视图集,这就是为什么我认为我的错误不是来自 CRF。我怀疑我的 django 视图有问题。

当我读取 CreatePaymentView 中的 request 变量时,数据是空 JSON,而不是 {test_data: 'whatever'}

使用 DRF 发送简单 POST 的最佳做法是什么?

【问题讨论】:

  • 您能在浏览器的网络选项卡中调试请求吗?也许问题就在那里,因为在您的后端代码中一切似乎都很好。
  • 感谢@lucasnadalutti 的评论。看来问题来自带有断点的 Visual Studio 监视功能。不用看带断点的代码,一切正常。

标签: post view django-rest-framework


【解决方案1】:

正如 cmets 中所解释的,问题似乎来自带有断点的 Visual Studio 监视功能。不用看带断点的代码,一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-07
    • 2018-12-06
    • 2020-10-07
    相关资源
    最近更新 更多