我想显示经过身份验证的用户列表.

文档上:http://docs.djangoproject.com/en/dev/topics/auth/

类模型.用户
IS_AUTIFIATED()Ó
始终返回True.这是一种告诉用户是否已通过身份验证的方法....

您可以在模板端知道current用户是否已通过身份验证:

{%if user.is_Authenticated%} {%endif%}

但是我没有找到获取认证用户列表的方法.

有什么 idea 吗?

推荐答案

按照rz的回答,您可以查询Session模型中未过期的会话,然后将会话数据转换为用户.一旦您获得了它,您就可以将其转换为一个模板标记,它可以在任何给定的页面上呈现列表.

(这一切都没有经过测试,但很有希望接近成功).

获取所有登录的用户.

from django.contrib.auth.models import User
from django.contrib.sessions.models import Session
from django.utils import timezone

def get_all_logged_in_users():
    # Query all non-expired sessions
    # use timezone.now() instead of datetime.now() in latest versions of Django
    sessions = Session.objects.filter(expire_date__gte=timezone.now())
    uid_list = []

    # Build a list of user ids from that query
    for session in sessions:
        data = session.get_decoded()
        uid_list.append(data.get('_auth_user_id', None))

    # Query all logged in users based on id list
    return User.objects.filter(id__in=uid_list)

使用它,您可以创建一个简单的包含模板标记.

from django import template
from wherever import get_all_logged_in_users
register = template.Library()

@register.inclusion_tag('templatetags/logged_in_user_list.html')
def render_logged_in_user_list():
    return { 'users': get_all_logged_in_users() }

logged_in_user_list.html

{% if users %}
<ul class="user-list">
    {% for user in users %}
    <li>{{ user }}</li>
    {% endfor %}
</ul>
{% endif %}

然后在你的主页上,你可以在你喜欢的地方使用它...

{% load your_library_name %}
{% render_logged_in_user_list %}

EDIT

对于那些谈论持续两周的问题的人,我假设任何想要拥有"活跃用户"类型的列表的人都会使用SESSION_EXPIRE_AT_BROWSER_CLOSE的设置,尽管我认识到情况并不总是这样.

Django相关问答推荐

Django后端对印前判断请求未通过访问控制判断给我以下回应:否访问控制允许来源

AttributeError:';ManyToOneRel&39;对象没有属性';attname';

如何在Django REST框架中使用FactoryBoy创建不同的项目

Django:我的上下文变量不能用于重复的for循环

如何从基于类的视图将用户保存在 django 模型中

自定义身份验证 django

如何根据查询集中的条件返回多个聚合?

在 Bootstrap 中使单击的选项卡处于活动状态

如何在 forms.Form 子类上动态设置 models.ModelChoiceField 的查询集

Django Facebook Connect 应用推荐

如何使用 django 发送 POST 请求?

有 Django List View 模型排序吗?

在 Django 1.8 或更高版本中填充时出现Models aren't loaded yet"错误

在 django 中是否有生成 settings.SECRET_KEY 的功能?

django 管理员操作而不 Select 对象

过滤 Django 数据库中包含数组中任何值的字段

AUTH_USER_MODEL 指的是尚未安装和创建的模型 .. AbstractUser 模型无法登录

Django中GROUP BY中注释的聚合

如何使用 ModelSerializer 显示所有模型字段?

BASE DIR 的绝对路径是什么?