修改运行端口号
进行修改,注意不要选择太低或者太高的端口号以及特殊的端口号。
点击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中查找于该用户关联的课程信息:
运行:










网友评论