美文网首页
2020-05-22--Django项目13--个人中心

2020-05-22--Django项目13--个人中心

作者: program_white | 来源:发表于2020-05-23 16:09 被阅读0次

修改运行端口号


进行修改,注意不要选择太低或者太高的端口号以及特殊的端口号。



点击apply即可。
运行:


个人中心页面

个人中心页面分为:

  • 个人资料
  • 我的课程
  • 个人收藏
  • 我的消息
    其中个人收藏又分为:
  • 收藏课程
  • 收藏机构
  • 收藏讲师
    首先进行模板继承操作:
    因为个人中心的页面相对独立,所以不能继承base.html了,要重新写一个被继承的页面---usercenter-base.html。
    复制usercenter-info.html改名为usercenter-base.html,在其中加上:
  • title插槽
  • css插槽
  • 面包屑插槽
  • 右部分内容插槽

使用继承优化个人资料页面代码


接下来要显示该页面了
首先分析:用户要点击的是右上角的进入个人中心按钮进入该页面的,所以修改该按钮的跳转链接:



编写url:
在MXOnline/urls.py中编写users app的总路由:

#users个人中心的路由
url(r'^users/',include(('apps.users.urls','users'),namespace='users'))

在app/users新建urls.py:

from django.conf.urls import url
from apps.users.views import *

urlpatterns = [
    #个人资料
    url(r'^info/$',UserInfoView.as_view(),name='info')
]

在view中编写视图函数:

#个人中心--个人资料
class UserInfoView(LoginRequiredMixin,View):
    login_url = '/login/'
    def get(self,request,*args,**kwargs):
        return render(request,'usercenter-info.html',{
        })

在view中还是要判断是否登录,如果没有登录,就跳转到login页面。
运行:



点击进入个人中心。



这个页面的数据还是假的,那么就要进行绑定数据了:
头像:

昵称和生日:



性别的判断:

运行:

这时候个人中心的头部登录信息还是死的,所以我们要把之前在base.html中的头部登陆验证复制过来:
<div class="top">
                <div class="wp">
                    <div class="fl">
                        <p>
                            服务电话:<b>400-888-888</b>
                        </p>
                    </div>

                    {% if user.is_authenticated %}
                        <div class="personal">
                            <dl class="user fr">
                                <dd>{{ user.nick_name }}<img class="down fr" src="/static/images/top_down.png"/></dd>
                                <dt><img width="20" height="20" src="{{ user.image.url }}"/>
                                </dt>
                            </dl>
                            <div class="userdetail">
                                <dl>
                                    <dt><img width="80" height="80"
                                             src="{{ user.image.url }}"/>
                                    </dt>
                                    <dd>
                                        <h2></h2>
                                        <p>{{ user.username }}</p>
                                    </dd>
                                </dl>
                                <div class="btn">
                                    <a class="personcenter fl" href="{% url 'users:info' %}">进入个人中心</a>
                                    <a class="fr" href="{% url 'logout' %}">退出</a>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                    {% else %}
                        <a style="color:white" class="fr registerbtn" href="register.html">注册</a>
                        <a style="color:white" class="fr loginbtn" href="{% url 'login' %}">登录</a>

                    {% endif %}

再次运行:
index:



个人中心:



这样的话,前后的登录信息就一致了。
然后在个人中心的页面中有四个页面,要根据左侧的按钮进行选择,并且有css样式的变换,那么就要在这里进行判断:

在usercenter_base.html中进行修改:



在users/view中:
添加current_pagede值:

我的课程页面

可以按照之前的方法配置url和编写相关的view视图,但是为了方便,由于我的课程页面是不需要进行传递任何值的(user不需要显式传递),所以采用较为简单的方法进行操作:
之前方法:
users/urls.py:

    #我的课程
    url(r'^mycourse/$',UserMycourseView.as_view(),name='mycourse')

views.py:

class UserMycourseView(View):
    def get(self, request, *args, **kwargs):
        return render(request,'usercenter-mycourse.html',{
        })

新方法:
users/urls.py:

from django.contrib.auth.decorators import login_required
from django.views.generic import TemplateView
    #我的课程
    url(r'^mycourse/$',
        login_required(TemplateView.as_view(template_name='usercentermycourse.html'), login_url='/login/'),{"current_page": "mycourse"}, name='mycourse'),

解析:

login_required是用来装饰方法进行登录验证的装饰器。
第二个参数在这里使用login_required方法,第一个参数是要装饰的方法或者要进入的页面,第二个参数是login_url,也就是跳转到登录页面的url。
第三个是要传递的参数--current_page等于mycourse,用于css样式的验证,
第四个为name值。
在userscenter_base.html中修改跳转链接:


前端页面使用继承优化:



运行:


填充数据

找到右半部分:



根据user到operations app中查找于该用户关联的课程信息:



运行:

相关文章

网友评论

      本文标题:2020-05-22--Django项目13--个人中心

      本文链接:https://www.haomeiwen.com/subject/cethahtx.html