当前位置: 首页 > 面试题库 >

Django:用户登录时发出信号?

洪逸清
2023-03-14
问题内容

在我的Django应用中,我需要在用户登录时开始运行一些定期的后台作业,并在用户注销时停止运行它们,因此我正在寻找一种优雅的方式

  1. 收到用户登录/注销的通知
  2. 查询用户登录状态
    在我看来,理想的解决方案是

  3. 由每个发送的信号django.contrib.auth.views.login... views.logout

  4. 一种django.contrib.auth.models.User.is_logged_in()类似于… User.is_active()或… User.is_authenticated()
    Django 1.1.1没有该功能,我不愿意修补该源代码并添加它(无论如何都不确定如何做到)。

作为一个临时解决方案,我is_logged_in向UserProfile模型添加了一个布尔字段,该字段默认情况下已清除,该字段在用户首次点击登录页面(由定义LOGIN_REDIRECT_URL = '/')时设置,并在后续请求中被查询。我将其添加到UserProfile中,因此不必为此而派生和自定义内置User模型。

我不喜欢这种解决方案。如果用户明确单击注销按钮,则可以清除该标志,但是在大多数情况下,用户只是离开页面或关闭浏览器即可;在这些情况下,清除标志似乎对我来说不是直截了当的。除此以外(虽然这是数据模型的清晰性挑剔),但is_logged_in它不属于UserProfile,而是属于User模型。

谁能想到替代方法?


问题答案:

您可以使用这样的信号(我将我的信号放在models.py中)

from django.contrib.auth.signals import user_logged_in

def do_stuff(sender, user, request, **kwargs):
whatever…

user_logged_in.connect(do_stuff)



 类似资料:
  • cmf_get_current_user() 功能 获取当前登录的前台用户的信息,未登录时,返回false 参数 无 返回 array:用户信息;false表示未登录;

  • 问题内容: 我想设置我的网站,以便如果用户点击该页面并且他们已经登录,它将把他们重定向到主页。如果未登录,它将正常显示。由于登录代码内置在Django中,我该怎么做? 问题答案: 我假设你当前正在使用内置的登录视图, 或你网址中的类似内容。 你可以编写包含默认视图的登录视图。它将检查用户是否已经登录,如果已经登录则重定向,否则使用默认视图。 就像是: 当然可以相应地更改你的网址:

  • 我几乎完成了我的一个项目(对我来说,我是一个初学者)。我想隐藏登录链接时,一个角色(管理员或用户)是登录到数据库。我还想显示一个名为“添加等级”的链接,仅当Admin(Manager)登录时。我正在使用spring boot、Tymeleaf、spring security5和h2&JDBC。 总之,我想隐藏或显示基于用户角色的HTML 更新:当我使用 匿名用户 这是我在navbar中包含或不包含

  • cmf_get_current_user() 功能 获取当前登录的前台用户的信息,未登录时,返回false 参数 无 返回 array:用户信息;false表示未登录;

  • 接口说明 用户登录 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/user/1.0.0/login 是否需要登录 否 请求字段说明 参数 类型 请求类型 是否必须 说明 username string form 是 用户名 password string form 是 密码 响应字段说明 参数 类型 说明 user St

  • 回顾 在上一章中,我们已经创建了数据库以及学会了使用它来存储用户以及 blog,但是我们并没有把它融入我们的应用程序中。在两章以前,我们已经看到如何创建表单并且留下了一个完全实现的登录表单。 在本章中我们将会建立 web 表单和数据库的联系,并且编写我们的登录系统。在本章结尾的时候,我们这个小型的应用程序将能够注册新用户并且能够登入和登出。 我们接下来讲述的正是我们上一章离开的地方,所以你可能要确