细节视图不一致地显示数据

时间:2013-02-24 04:21:13

标签: python django

之前有没有人遇到过这个问题?我有一个详细的视图,当我第一次点击它时 - 我希望展示的一切,确实如此。但是,如果我刷新页面(ctrl + F5),或者离开并返回,只有部分页面会再次显示。

以下是我的观点的简化示例:

@login_required(login_url='/login/')
def detail(request, id):
    queryset1 = ...filter(id = id).values().get() 
    queryset2 = ...filter(id = id)
    queryset3 = ...filter(id = id) 
    return render_to_response('template.html',{'q1':queryset1,...}

网址:

urls = ('',
    url(r'^respondent-detail/(?P<id>\d+)/$', 'myapp.views.detail',name='detail'),
)

查看:

{% include 'includes/header.html' %}
{% include 'includes/navigation.html' %}
{{ q1.x }}
{{ q1.y }}
{{ ...}} 

{% if q2 %}
    {% include 'q2.html' %}
{% else %}
    <p>Post this 2</p>
{% endif %}     

{% if q3 %}
    {% include 'q3.html' %}
{% else %}
    <p>Post this 3</p>
{% endif %} 
  • 首次刷新时,q2和q3都会返回“发布此内容”
  • 第二次刷新时,q2按预期返回,q3返回“发布此内容”
  • 在第三次刷新时,q2和q3按预期返回。

更新

我找到了一个解决方案,在视图的顶部添加@never_cache可以完全消除这个问题,这表明当我使用硬刷新时,缓存会发生奇怪的事情。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

同时使用django-debug-toolbardjango-debug-cache-paneldjango-cache-panel我已经能够嗅出大多数非显而易见的缓存问题,您可以将工具栏锁定下来,以便它只对某些IP可见