【发布时间】:2016-12-23 03:02:07
【问题描述】:
我的 api 是使用 Django Rest Framework 设置的,我觉得我正在与 Django 尾部斜杠作斗争。似乎有一些我没有想到的组合。基本查询始终返回 api 端点处的所有对象。
代码如下:
// App config
var App = angular.module('App',['App.controllers','restangular','ngRoute','ngResource']);
App.config(function ($interpolateProvider, $httpProvider, $resourceProvider, RestangularProvider) {
RestangularProvider.setBaseUrl('/api/');
// Things I've tried
RestangularProvider.setBaseUrl('http://127.0.0.1:8000/api/');
RestangularProvider.setRequestSuffix('/');
// with suffix http://127.0.0.1:8000/api/tests/?value=404
// without suffix http://127.0.0.1:8000/api/tests?value=404
$resourceProvider.defaults.stripTrailingSlashes = false;
});
// In controller
// Items in database
// [{"itemID": 1,"value": 5,},{"itemID": 2,"value": 404,},{"itemID": 3,"value": 73,}]
var params = {'value': 404};
Restangular.all('tests').getList(params).then(function(items) {
var items = items
console.log(items)
});
// Even the standard $resource does the same thing.
var Foo = $resource('/api/tests', {value:'@somevalue'});
$scope.allItems = {};
Foo.query({value:404}, function(items) {
$scope.allItems = items;
});
我可以看到它试图转到 /tests?params 但它会出错到 tests/?params
"GET /api/tests?value=404 HTTP/1.1" 301 0
"GET /api/tests/?value=404 HTTP/1.1" 200 361
也许我的查询结构有误?有没有办法通过实际访问地址来测试查询?从技术上讲,不应该导航到http://127.0.0.1:8000/api/tests?value=404 在 DRF 中只显示值为 404 的对象列表吗? DRF 在 url 末尾的参数前面加上斜杠 (http://127.0.0.1:8000/api/tests/?value=404)。
有没有人尝试过使用 Django Rest Framework 的真实方法?
【问题讨论】:
-
其实我们需要看DRF代码,特别是urls.py和views.py
标签: angularjs django django-rest-framework restangular