【发布时间】: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