2016-11-24 60 views
1

我送的用户列表为模板,并希望以显示已登录的人。但是,当我遍历和检查is_authenticated,它总是假的。下面的代码显示没有用户名,但我希望它显示当前用户的名称。神社将所有烧瓶登录用户不认证

{% for user in users %} 
    {% if user.is_authenticated %} 
     {{ user.username }} 
    {% else %} 
     - 
    {% endif %} 
{% endfor %} 

我尝试使用current_user但只显示当前用户,而不是用户的所有名单。

+0

你确定用户类别已is_authenticated方法/属性? – Pax0r

+0

什么是'用户'?它的类型是什么?它是如何设置的? – dirn

+0

我改变了我的数据库,它的工作原理。 base.html文件代码: 活动用户:{在用户%%为活性} \t \t {%如果active.logged_in == 1%} \t {{active.username}} \t \t {%ENDIF%} route.py代码: 用户= user.query.filter_by(用户名= current_user.username)。首先() user.logged_in = 1个 db.session.commit() 每次在,用户的用户日志。 logged_in = 1保存在我的数据库中。每当用户注销时,用user.logged_in = 0的其他方法。 - thx的帮助球员:) –

回答

0

你的循环是:

for abcd in efgh: 

这里,变量abcd存储从可用的变量efgh内的值的列表/字典/元组当前迭代的项。因此,当您执行user.is_authenticated检查时,它将尝试搜索迭代器,因此失败。

+0

是的,你是对的,我错过了。我把它改为:活跃用户:{%为活跃用户%} {%如果active.is_authenticated%}
- {{active.username}} {%其他%} - {%ENDIF%} {%ENDFOR%}。但现在它显示所有用户 - 如果登录或没有 –

+0

没关系'is_authenticated'是一个功能或价值? @DasBoot – hjpotter92

+0

我正在使用Flask_login:is_authenticated是一个类(https://flask-login.readthedocs.io/en/latest/)@ hjpotter92 –

1

is_authenticated是,即使他们没有登录的所有用户真实的。只有匿名用户没有通过认证。如果您只想显示已登录的用户,请使用current_user。如果您想在列表中标记登录用户,则在迭代过程中将每个用户与current_user进行比较。如果你继承UserMixin

<ul>{% for user in users %} 
    <li>{{ user.username }}{% if user.username == current_user.username %} (current){% endif %}</li> 
{% endfor %}</ul> 

您的用户类只会有is_authenticated属性(或者,如果你定义它自己)。 Jinja将未知变量解释为false,所以如果您不分类,那么Jinja总会认为is_authenticated是错误的,因为它不存在。

from flask_login import UserMixin 

class User(db.Model, UserMixin): 
    ... 

知道了登录的用户的完整列表是一个更大的问题。该请求只知道当前用户,因为登录是在每个用户的浏览器上使用cookie处理的。您的应用程序将需要设置一些其他的方式来跟踪谁登录。例如,你可以存储每个用户登录该模型的时间,然后再考虑他们登录,如果他们在一天之内做到了。