为什么request.user的值看起来不一致



我希望应用程序能够检查当前登录的用户是否是";test2";。我正在使用Django并运行以下代码:

<script>
console.log('{{ request.user }}')
{% if request.user == "test2" %}
console.log('The user that is currently logged in is test2.')
{% else %}
console.log('There was an error.')
{% endif %}
</script>

我的控制台正在记录以下内容:

test2
There was an error.

为什么会这样?我如何让应用程序识别";test2";是否已登录?

request.user.username

<script>
console.log('{{ request.user.username }}')
{% if request.user.username == "test2" %}
console.log('The user that is currently logged in is test2.')
{% else %}
console.log('There was an error.')
{% endif %}
</scrip

这可能是因为request.user实际上是对象,但__str__赋予了Userusername属性。因此:

{% if request.user.username == "test2" %}
console.log('The user that is currently logged in is test2.')
{% else %}
console.log('There was an error.')
{% endif %}

*注意:-我假设test2用户名,并且它是unique

由于逻辑在模板中,因此在服务器端进行评估。这意味着request.user不是字符串,而是user实例。

console.log('{{ request.user }}')打印用户名的原因是在打印时,会调用__str__,返回username

因此,您需要使用正确的字段进行检查,即user.username

<script>
console.log('{{ request.user }}')
{% if request.user.username == "test2" %}
console.log('The user that is currently logged in is test2.')
{% else %}
console.log('There was an error.')
{% endif %}
</script>

最新更新