WSGIRequest是什么
print(request)
<WSGIRequest: GET '/profile/'>
https://blog.csdn.net/caoshou1866/article/details/100959164
def profile(request):
# return HttpResponse("hello, success")
print('request',request)
user = request.user
email = request.user.email
created_at = request.user.created_at
return HttpResponse(f"hello, {email},{created_at}")
class UserProfile(AbstractUser):
nickname = models.CharField(null=True, blank=True, max_length=255, verbose_name='昵称')
job_title = models.CharField(max_length=50, null=True, blank=True,verbose_name='职称')
introduction = models.TextField(blank=True,null=True,verbose_name='简介')
picture = models.ImageField(upload_to='profile_pics/',null=True,blank=True,verbose_name='头像')
location = models.CharField(max_length=50,null=True,blank=True,verbose_name='城市')
personal_url = models.URLField(max_length=255, null=True, blank=True,verbose_name='个人链接')
weibo = models.URLField(max_length=255,null=True,blank=True,verbose_name='微博链接')
zhihu = models.URLField(max_length=255,null=True,blank=True,verbose_name='知乎链接')
github = models.URLField(max_length=255,null=True,blank=True,verbose_name='github链接')
created_at = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
updated_at = models.DateTimeField(auto_now=True,verbose_name='更新时间')
实现request.user, request.user.email, request.user.created_at是因为settings.py里面中间件django.contrib.auth.middleware.AuthenticationMiddleware
二. 使用user.is_authenticated来判定用户是否登录
如果你使用user.is_authenticated判断用户是否登录,那么意味着你采用了django的auth系统,
那么你的登陆最好使用django.contrib.auth
中的login方法,
该方法会为将user_id
以及user_backend
放入session中存储,
.is_authenticated()通过判断session中是否有user_id
以及user_backend
来判断用户是否登陆。
如果,采用自己的登陆方法,那么有可能没将user_id
或者user_backend
放入session
中保存。
所以你的user被django认为没有登录,虽然你已经登陆了。
最好的办法是利用django自己的登陆方法,结合该方法,判断用户是否登陆,从而决定用户的行为。
在views.py
里面可以直接写user.is_authenticated
进行判断
def profile(request):
# return HttpResponse("hello, success")
print('request',request)
user = request.user
email = request.user.email
created_at = request.user.created_at
# return HttpResponse(f"hello, {email},{created_at}")
# print(request.COOKIES)
# print(request.session)
if user.is_authenticated:
print('yes, you logined')
return render(request, 'users/profile.html', {
'user':user})
在templates里面的html文件里面可以
{
% if user.is_authenticated %}
{
% endif %}
es里面的html文件里面可以
{
% if user.is_authenticated %}
{
% endif %}