我有一个网站,我一直在django上写网站已经有一段时间了,但是从来没有像以前那样经历过这样的事情......
麻烦当我登录时一切似乎都没问题,但作为冲浪随机页面,经常发生的事情,{%if user.is_authenticated%} {%endif%}之间的代码消失了我没有登录,虽然我只是。
如果我回到我记录的上一页,在进入下一页之前,它会显示我再次登录,并且它完全随机发生。它不像是在具体行动之后发生的。
通常当我尝试这样做时,一切正常,但随着时间的推移,会发生类似这样的事情。虽然如果去登录页面,虽然它随机显示我已经退出,但它会自动将我退回,因为我知道会话确实存在,因为某种原因django只是看不到它.....
我很困惑可能出错的地方。任何可能的建议都会很棒。
1)我没有使用任何会话功能。基本上没有什么可以故意触发这些事件。只是视图中的简单逻辑并返回render_to_response('template',RequestContext(request,{}))
2) Django正在运行 nginx 和 uwsgi
3)这是网站site,目前正在开发中,但您可以使用用户测试和密码测试来尝试...也许会发生相同的效果,你会看到它....但我不保证它会立即发生,它是完全随机的。要尝试你只需要点击随机页面.....并最终你会看到它显示你已经退出,但你没有。
答案 0 :(得分:0)
您的帖子不会给我们提供太多信息,而且您的网页会超时。
我最好的建议是将login_required
装饰器添加到您的所有视图中。如果您实际上已经注销,您将能够看到这种情况发生的位置。
将导入添加到页面顶部,并在每个视图上方添加装饰器,如下所示:
from django.contrib.auth.decorators import login_required
@login_required(login_url='LINK_TO_LOGIN_URL')
def first_view(request):
# Your view code
您将在未登录的任何位置被重定向到您的登录URL。
一旦诊断出您的注销位置,就应该能够更轻松地排除故障。如果您能够访问每个视图,则可以对模板和is_authenticated
代码进行问题排查。