[英]why django returns me a template Error for this case {% if user.is_authenticated %}?
[英]Why user autometically authenticated in django test case?
from django.urls import reverse
from rest_framework.test import APITestCase
from rest_framework.authtoken.models import Token
from faker import Faker
fake = Faker()
APICLIENT = APIClient()
from factory_djoy import UserFactory
class TestAccount(APITestCase):
def setUp(self):
self.user = UserFactory()
def test_print_name(self):
print(self.user.is_authenticated)
# do something here
为什么print(self.user.is_authenticated)为真。 我试图简单地使用User.objects.create创建一个用户,它也返回与 is_authenticated 相同的True 。
我的理解是在进行登录或force_authenticate之前它不应该是True 。 我做错了什么或者我的理解不正确?
.is_authenticated
并不意味着用户在服务器端进行了身份验证。 所有User
对象都有is_authenticated = True
,它用于区分User
[Django-doc] object 和AnonymousUser
[Django-doc] 。
实际上,默认情况下,如果您查找request.user
,如果设置没有附加用户,它将返回AnonymousUser
object ,或者如果 Z21D6F40CFB511982E4424E0E250A95 绑定到该用户,则返回User
object 。
对于内置User
model, .is_autenticated
将始终返回True
[GitHub] :
@property def is_authenticated(self): """ Always return True. This is a way to tell if the user has been authenticated in templates. """ return True
但是,您可以定义您自己的自定义用户 model,并定义更复杂的测试:例如,只有具有is_active
的用户才能进行身份验证,或者只有在过去两个月活跃的用户才能进行身份验证。
如果您在视图中写入if user.is_authenticated
,那么对于内置用户 model 将区分AnonymousUser
(将返回False
)和User
。 但是您可以使用自定义实现定义自定义用户 model。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.