【问题标题】:error while using sys.exit() in a django template with iframe在带有 iframe 的 django 模板中使用 sys.exit() 时出错
【发布时间】:2021-03-24 16:28:52
【问题描述】:

我在 python3 中使用基于 django 的 Web 应用程序。

注销方法会将我重定向到不同的视图,它还会调用 sys.exit("str")

def logout(request):
  try:
    
    logger.info("Logging Out")
    del request.session['role']
    del request.session['email']
    del request.session['fullname']
    del request.session["token"]
    session.close()
    sys.exit("bye")
    return redirect("/login")
   
  except Exception as e:
    logger.info("Exception : {}".format(e))

上面的代码按预期重定向了我。
最近我在模板 html 中引入了 iframe,这样当从侧面菜单导航中单击页面时,页面会在 iframe 中呈现

<div class="sidenav">
  <a href="lkpview" target="iframe1">About</a>
  <a href="logout" >Sign out</a>
  
</div>

<div class="main">
    <iframe width="90%" height="300" name="iframe1">
    </iframe>

</div>

现在如果点击退出,我会收到此错误:

A server error occurred.  Please contact the administrator.

[![enter image description here][1]][1]

不确定这一点,在我将 iframe 引入 django 模板之前,它并没有发生。任何人都可以在这里帮助我吗?谢谢

【问题讨论】:

  • 我没有使用 Django 的经验,但是在那里调用 sys.exit 没有多大意义。那会杀死你的程序。永远无法到达其后的return redirect("/login")
  • 是的,也许你是对的,但它在使用 sys.exit() 后重定向不确定如何在使用 iframe 之前,sys.exit() 没有在命令行上终止我的程序,直到我按下 CTRL +C

标签: python django iframe


【解决方案1】:

看起来您可能在 settings.py 中将“调试”设置为“假”,因为您应该得到比这更多的信息。但无论如何, sys.exit() 不是正确的命令,django 有一个 auth 模块,可以注销用户然后重定向他们。使用 sys.exit() 并没有真正将它们注销,就像斩首它们一样。使用这个:

from django.contrib.auth import logout

def logout_view(request):
    logout(request)

【讨论】:

  • 您好,感谢您的输入,我没有使用 Django 的输入验证,我使用的是我自己的自定义数据库,并且我通过不同的系统登录。此注销仍然适用吗?另外,我使用 sys.exit() 的原因是为了解决 LoggingAdapter 对象没有被破坏的问题,我在这里进行了描述。 stackoverflow.com/questions/66707080/…
  • 我不确定,我知道的不足以回答这个问题。但是,a) 我不明白为什么使用自定义数据库会阻止您使用 Django 的身份验证模块。顺便说一句,django 的全部意义在于将所有东西都放在一个简单的系统中,它是最简单的 Web 框架之一。我建议使用 django 身份验证系统并对其进行扩展以满足您的需求(您可以)。
猜你喜欢
  • 1970-01-01
  • 2012-12-29
  • 1970-01-01
  • 2015-04-04
  • 2016-01-20
  • 2020-05-05
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
相关资源
最近更新 更多