使用浏览器的“后退按钮”时,如何刷新查询集?

时间:2019-07-04 07:51:44

标签: python mysql sql django web

我正在使用django构建一个简单的网站,并且在其中部分消息可以单击并标记为已读,这还会拉出带有消息标题和正文的详细页面。但是,当我按下“后退”按钮时,它仍然保持未读状态,直到刷新页面为止。我已经检查了sqlite文件,它确实显示为已读(我使用的是简单的布尔字段),但是直到刷新后它才出现在页面上。

我尝试刷新页面以确保该字段具有正确的值,但是我不确定从何处去。

我的代码中将用户带到消息详细信息页面的部分如下:

def messages(request):
    user = request.user
    sent_messages = Message.objects.filter(sender=user.id)
    unread_messages = Message.objects.filter(recipient=user.id, read=0)
    read_messages = Message.objects.filter(recipient=user.id, read=1)
    context = {
        'sent_messages': sent_messages,
        'unread_messages': unread_messages,
        'read_messages': read_messages,
    }
    return render(request, 'messenger/messages.html', context)

它应该自动将消息发送到页面上的未读部分,但是除非明确地重新加载页面,否则它不会这样做。

1 个答案:

答案 0 :(得分:0)

此javascript代码段应可以解决您的问题。 (https://stackoverflow.com/a/56851042/2099689

var perfEntries = performance.getEntriesByType("navigation");

if (perfEntries[0].type === "back_forward") {
    location.reload(true);
}