WSGIRequest是什么

WSGIRequest是什么

print(request)
<WSGIRequest: GET '/profile/'>

https://blog.csdn.net/caoshou1866/article/details/100959164

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Om2EFxbS-1599126528137)(C:\Users\93623\AppData\Roaming\Typora\typora-user-images\image-20200902170558707.png)]

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 %}

猜你喜欢

转载自blog.csdn.net/weixin_46129834/article/details/108389767