0

编辑:我正在使用 Django。

我正在使用以下功能。由于此功能用于发布数据,因此我需要为其添加 csrf 保护。所以,我在函数之前添加了@csrf_protect。此外,如前所述,我需要设置 RequestContext,但在使用/返回 json_response 时我无法弄清楚如何做到这一点。

def message_updates(self, request):
    cursor = request.session.get('cursor')
    if not self.cache or cursor == self.cache[-1]['id']:
        self.new_message_event.wait()
    assert cursor != self.cache[-1]['id'], cursor
    try:
        for index, m in enumerate(self.cache):
            if m['id'] == cursor:
                return json_response({'messages': self.cache[index + 1:]})
        return json_response({'messages': self.cache})
    finally:
        if self.cache:
            request.session['cursor'] = self.cache[-1]['id']
        else:
            request.session.pop('cursor', None)

在通常情况下,我正在写如下内容:

@csrf_protect
def main(self, request):
    if self.cache:
        request.session['cursor'] = self.cache[-1]['id']
    return render_to_response('index.html', {'MEDIA_URL': settings.MEDIA_URL, 'messages': self.cache},context_instance=RequestContext(request))
4

0 回答 0