Django博客系统(用户中心展示)
  TEZNKK3IfmPf 2023年11月13日 13 0

1. 页面展示

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

from django.views import View

class UserCenterView(View):

    def get(self,request):

        return render(request,'center.html')

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

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

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

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

    <!-- Header部分 -->
    {% load staticfiles %}
    <!-- 引入bootstrap的css文件 -->
    <link rel="stylesheet" href="{% static 'bootstrap/css/bootstrap.min.css' %}">
    <!-- 引入vuejs -->
    <script type="text/javascript" src="{% static 'js/vue-2.5.16.js' %}"></script>
    <script type="text/javascript" src="{% static 'js/axios-0.18.0.min.js' %}"></script>
    ...
    <!-- Footer部分 -->
    <script type="text/javascript" src="{% static 'js/host.js' %}"></script>
    <script type="text/javascript" src="{% static 'js/common.js' %}"></script>
    <script type="text/javascript" src="{% static 'js/center.js' %}"></script>
    ...
    <!-- 页面跳转部分 -->
    <a class="dropdown-item" href='{% url 'users:center' %}'>个人信息</a>
    <a class="dropdown-item" href='{% url 'users:logout' %}'>退出登录</a>

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

<a class="dropdown-item" href='{% url 'users:center' %}'>个人信息</a>

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中的数据显示

<form method="post" enctype="multipart/form-data">
    <!-- username -->
    <div class="form-group col-md-4">
        <label for="username">用户名</label>
        <input type="text" class="form-control" id="username" name="username" value="{
    
      { username }}" >
    </div>
    {% if avatar %}
        <br> <div class="col-md-4">头像</div>
        <img src="{
    
      { avatar }}"  class="col-md-4"><br>
        {% else %}
        <br><h5 class="col-md-4">暂无头像</h5><br>
    {% endif %}
    <!-- avatar -->
    <div class="form-group col-md-4">
        <label for="avatar">上传头像</label>
        <input type="file" class="form-control-file" name="avatar" id="avatar">
    </div>

    <!-- phone -->
    <div class="form-group col-md-4">
        <label for="phone">电话</label>
        <input type="text" class="form-control" disabled="disabled" id="phone" name="phone" value="{
    
      { mobile }}">
    </div>
    <!-- desc -->
    <div class="form-group col-md-4">
        <label for="desc">简介</label>
        <!-- 文本区域 -->
        <textarea type="text" class="form-control" id="desc" name="desc" rows="12" >{
    
      { user_desc }}</textarea>
    </div>
    <!-- 提交按钮 -->
    <button type="submit" class="btn btn-primary"  >修改</button>
</form>
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年05月31日   30   0   0 python开发语言
  TEZNKK3IfmPf   2024年05月31日   24   0   0 python
  TEZNKK3IfmPf   2024年05月31日   22   0   0 python
TEZNKK3IfmPf