Django Rest Framework + React + Reflux:无法获取新对象
Django Rest Framework + React + Reflux: Can't GET new objects
我正在尝试 post 使用 Reflux 操作通过 React 表单创建一个新对象。那部分工作正常。该对象按预期 posting,但是,当我尝试以编程方式获取该对象时,它似乎无法访问,除非我注销、重新启动本地服务器,或者有时甚至只是访问 api 手动翻页。
关于何时可以获取对象以及何时不能获取对象,我似乎无法获得一致的行为。查看 api 页面然后返回我的应用程序页面似乎确实有某种效果,但我不知道为什么。也许有人可以为我阐明这一点。
可以肯定的是 POST 请求工作正常,因为当我手动检查它时对象总是在那里。
此外,如果您在下面的代码中注意到,我会检查 api 页面上的最后一个对象是什么,并且控制台会响应之前的最后一个项目。因此,我能够以编程方式访问 api 页面,但我创建的对象不存在(尽管如果我手动访问该页面,它就会存在)。还要注意,刷新会产生相同的结果。
对问题可能出在哪里或为什么会发生有任何想法吗?
操作如下:
MainActions.getUserProfile.listen(function(user) {
request.get('/api/page/').accept('application/json').end( (err, res) => {
if (res.ok) {
var profiles = res.body;
var filteredData = profiles.filter(function (profile) {
if (profile) {
return profile.user === user
}
else {
console.log('No Profile yet.')
}
});
if (filteredData[0]) {
var data = {
user: filteredData[0].user,
...
};
... // other actions
} else {
console.log(profiles[profiles.length - 1].user)
}
} else {
console.log(res.text);
}
});
});
问题最终出现在响应的 Cache-Control header 中 max-age=600。将其更改为 max-age=0 解决了这个问题。在这种情况下,提供缓存响应没有多大意义,所以我将其添加到序列化程序的 ViewSet 中:
def finalize_response(self, request, *args, **kwargs):
response = super(MyApiViewSet, self).finalize_response(request, *args, **kwargs)
response['Cache-Control'] = 'max-age=0'
return response
我正在尝试 post 使用 Reflux 操作通过 React 表单创建一个新对象。那部分工作正常。该对象按预期 posting,但是,当我尝试以编程方式获取该对象时,它似乎无法访问,除非我注销、重新启动本地服务器,或者有时甚至只是访问 api 手动翻页。
关于何时可以获取对象以及何时不能获取对象,我似乎无法获得一致的行为。查看 api 页面然后返回我的应用程序页面似乎确实有某种效果,但我不知道为什么。也许有人可以为我阐明这一点。
可以肯定的是 POST 请求工作正常,因为当我手动检查它时对象总是在那里。
此外,如果您在下面的代码中注意到,我会检查 api 页面上的最后一个对象是什么,并且控制台会响应之前的最后一个项目。因此,我能够以编程方式访问 api 页面,但我创建的对象不存在(尽管如果我手动访问该页面,它就会存在)。还要注意,刷新会产生相同的结果。
对问题可能出在哪里或为什么会发生有任何想法吗?
操作如下:
MainActions.getUserProfile.listen(function(user) {
request.get('/api/page/').accept('application/json').end( (err, res) => {
if (res.ok) {
var profiles = res.body;
var filteredData = profiles.filter(function (profile) {
if (profile) {
return profile.user === user
}
else {
console.log('No Profile yet.')
}
});
if (filteredData[0]) {
var data = {
user: filteredData[0].user,
...
};
... // other actions
} else {
console.log(profiles[profiles.length - 1].user)
}
} else {
console.log(res.text);
}
});
});
问题最终出现在响应的 Cache-Control header 中 max-age=600。将其更改为 max-age=0 解决了这个问题。在这种情况下,提供缓存响应没有多大意义,所以我将其添加到序列化程序的 ViewSet 中:
def finalize_response(self, request, *args, **kwargs):
response = super(MyApiViewSet, self).finalize_response(request, *args, **kwargs)
response['Cache-Control'] = 'max-age=0'
return response