您当前的位置: 首页 >  django

IT之一小佬

暂无认证

  • 1浏览

    0关注

    1192博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Django博客系统(用户中心展示)

IT之一小佬 发布时间:2021-09-29 19:08:40 ,浏览量:1

1. 页面展示

1.在users.views.py文件中定义视图

from django.views import View

class UserCenterView(View):

    def get(self,request):

        return render(request,'center.html')

2.在users.urls.py文件中定义路由

from users.views import UserCenterView
urlpatterns = [
    # 参数1:路由
    # 参数2:视图函数
    # 参数3:路由名,方便通过reverse来获取路由
    path('center/', UserCenterView.as_view(),name='center'),
]

3.修改center.html中的资源加载方式

    
    {% load staticfiles %}
    
    
    
    
    
    ...
    
    
    
    
    ...
    
    个人信息
    退出登录

4.修改index.html中的的跳转连接

个人信息
2. 判断用户是否登录

需求:

  • 当用户登录后,才能访问用户中心。
  • 如果用户未登录,就不允许访问用户中心,将用户引导到登录界面。

实现方案:

  • 需要判断用户是否登录。
  • 根据是否登录的结果,决定用户是否可以访问用户中心。

Django用户认证系统提供了方法

  • request.user.is_authenticated()来判断用户是否登录。如果通过登录验证则返回True。反之,返回False。
  • LoginRequiredMixin封装了判断用户是否登录的操作。

1.用户中心使用LoginRequiredMixin

from django.views import View
from django.contrib.auth.mixins import LoginRequiredMixin

class UserCenterView(LoginRequiredMixin,View):

    def get(self,request):

        return render(request,'center.html')

2.设置未登录用户跳转的路由

#在工程的settings.py文件中,添加以下配置。
LOGIN_URL = '/login/'

3.根据登录的next参数设置登录跳转路由

# 实现状态保持
login(request, user)

# 响应登录结果
next = request.GET.get('next')
if next:
    response= redirect(next)
else:
    response =  redirect(reverse('home:index'))
3. 获取用户信息,模板渲染数据

1.获取用户信息修改center.html中的数据显示

from django.contrib.auth.mixins import LoginRequiredMixin
class UserCenterView(LoginRequiredMixin,View):

    def get(self,request):
        # 获取用户信息
        user = request.user

        #组织模板渲染数据
        context = {
            'username': user.username,
            'mobile': user.mobile,
            'avatar': user.avatar.url if user.avatar else None,
            'user_desc': user.user_desc
        }
        return render(request,'center.html',context=context)

2.修改center.html中的数据显示


    
    
用户名
关注
打赏
1665675218
查看更多评论
0.0533s