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