前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >零基础使用Django2.0.1打造在线教育网站(二十三):个人信息相关页面配置

零基础使用Django2.0.1打造在线教育网站(二十三):个人信息相关页面配置

原创
作者头像
啃饼思录
修改2018-09-13 22:00:53
6150
修改2018-09-13 22:00:53
举报

关于博主

努力与运动兼备~~~有任何问题可以加我好友或者关注微信公众号,欢迎交流,我们一起进步!

代码语言:txt
复制
                                      微信公众号:  啃饼思录
代码语言:txt
复制
                                    QQ: 2810706745(啃饼小白)

写在前面

本篇笔记我们将介绍个人信息相关页面的配置,具体包括我的课程,我的收藏,我的消息等功能,下面我们依次介绍一下。

本篇笔记对应于第二十三篇代码,对应于github的位置是https://github.com/licheetools/eduline

我的课程

老规矩,让我们的usercenter_mycourse继承我们的usercenter_base.html页面:

然后就是先配置path,打开users/urls.py文件,新增以下代码:

代码语言:txt
复制
from .views import  MyCourseView

  # 用户个人中心我的课程url
    path("mycourse/", MyCourseView.as_view(), name="mycourse"),

然后打开users/views.py文件,新增以下代码:

代码语言:txt
复制
# 用户个人中心我的课程函数
class MyCourseView(LoginRequiredMixin, View):
    login_url = '/login/'
    redirect_field_name = 'next'

    def get(self, request):
        return render(request, "usercenter-mycourse.html" ,{

        })

然后去usercenter-base.html页面设置我们的跳转链接:

然后运行我们的项目,就可以点击我的课程了:

接下来就是课程的动态填充了,自己先尝试一下在MyCourseView这个函数里面写一下业务逻辑代码:

代码语言:txt
复制
# 用户个人中心我的课程函数
class MyCourseView(LoginRequiredMixin, View):
    login_url = '/login/'
    redirect_field_name = 'next'

    def get(self, request):
        user_courses = UserCourse.objects.filter(user=request.user)

        return render(request, "usercenter-mycourse.html", {
            "user_courses": user_courses,

        })

然后打开usercenter-mycourse.html页面,配置动态加载:

接着刷新我们的页面,就可以看到我的课程了:

我的收藏

收藏授课机构

这里面有3个页面,我们一个个的来弄,先弄usercenter_fav_org页面。老规矩,让我们的usercenter_fav_org继承我们的usercenter_base.html页面:

然后就是先配置path,打开users/urls.py文件,新增以下代码:

代码语言:txt
复制
from .views import MyFavOrgView

 # 我收藏的课程机构url
    path("myfav/org/", MyFavOrgView.as_view(), name="myfav_org"),

然后打开users/views.py文件,新增以下代码:

代码语言:txt
复制
from operation.models import UserFavorite
from organization.models import CourseOrg

# 我收藏的课程机构函数
class MyFavOrgView(LoginRequiredMixin, View):
    login_url = '/login/'
    redirect_field_name = 'next'

    def get(self, request):
        org_list = []
        fav_orgs = UserFavorite.objects.filter(user=request.user, fav_type=2)
        for fav_org in fav_orgs:
            org_id = fav_org.fav_id
            org = CourseOrg.objects.get(id=org_id)
            org_list.append(org)
        return render(request, "usercenter-fav-org.html", {
            "org_list": org_list,

        })

然后去usercenter-base.html页面设置我们的跳转链接:

然后运行我们的项目,就可以点击我的课程了:

然后打开usercenter-fav_org.html页面,配置动态加载:

接着刷新我们的页面,就可以看到我收藏的课程机构了:

收藏课程机构

收藏授课讲师

我们现在来弄usercenter_fav_teacher页面。老规矩,让我们的usercenter_fav_teacher继承我们的usercenter_base.html页面:

然后就是先配置path,打开users/urls.py文件,新增以下代码:

代码语言:txt
复制
from .views import MyFavTeacherView

 # 我收藏的授课讲师url
    path("myfav/teacher/", MyFavTeacherView.as_view(), name="myfav_teacher"),

然后打开users/views.py文件,新增以下代码:

代码语言:txt
复制
from organization.models import Teacher


# 我收藏的授课讲师函数
class MyFavTeacherView(LoginRequiredMixin, View):
    login_url = '/login/'
    redirect_field_name = 'next'

    def get(self, request):
        teacher_list = []
        fav_teachers = UserFavorite.objects.filter(user=request.user, fav_type=3)
        for fav_teacher in fav_teachers:
            teacher_id = fav_teacher.fav_id
            teacher = Teacher.objects.get(id=teacher_id)
            teacher_list.append(teacher)
        return render(request, "usercenter-fav-teacher.html", {
            "teacher_list": teacher_list,

        })

然后去usercenter-fav_teacher.html页面设置我们的跳转链接和配置动态加载:

打开oganization/models.py文件,在Teacher函数新增用于获取课程数的函数:

代码语言:txt
复制
 def get_course_nums(self):
        return self.course_set.all().count()
就是这样:

还有记得去usercenter-fav_org.html页面设置我们的跳转链接,否则就跳不到机构讲师页面了:

然后运行我们的项目,就可以看到我收藏的授课讲师了:

收藏公开课程

我们现在来弄usercenter_fav_course页面。老规矩,让我们的usercenter_fav_course继承我们的usercenter_base.html页面:

然后就是先配置path,打开users/urls.py文件,新增以下代码:

代码语言:txt
复制
from .views import MyFavCourseView

 # 我收藏的公开课程url
    path("myfav/course/", MyFavCourseView.as_view(), name="myfav_course"),

然后打开users/views.py文件,新增以下代码:

代码语言:txt
复制
from courses.models import Course


# 我收藏的公开课程函数
class MyFavCourseView(LoginRequiredMixin, View):
    login_url = '/login/'
    redirect_field_name = 'next'

    def get(self, request):
        course_list = []
        fav_courses = UserFavorite.objects.filter(user=request.user, fav_type=1)
        for fav_course in fav_courses:
            course_id = fav_course.fav_id
            course = Course.objects.get(id=course_id)
            course_list.append(course)
        return render(request, "usercenter-fav-course.html", {
            "course_list": course_list,
        })

然后去usercenter-fav_course.html页面设置我们的跳转链接和配置动态加载:

注意:双箭头指示的url跳转需要在fav_xx.html这3个页面进行修改从而可以3个页面切换自如。

然后运行我们的项目,就可以看到我收藏的公开课程了:

不过右边的取消收藏,也就是删除还没实现:

我们需要在3个fav_xx.html页面修改传递的id即可:

然后打开我们的usercenter_base.html页面,找到这3段代码,这就是实现删除的js代码:

注意一下,这段代码里面需要放csrf_token,否则会出错:

代码语言:txt
复制
<script type="text/javascript">
    $('.jsDeleteFav_course').on('click', function(){
        var _this = $(this),
            favid = _this.attr('data-favid');
        $.ajax({
                cache: false,
                type: "POST",
                url: "/org/add_fav/",
                data: {
                    fav_type: 1,
                    fav_id: favid,
                    csrfmiddlewaretoken: '{{ csrf_token }}'
                },
                async: true,
                success: function(data) {
                    Dml.fun.winReload();
                }
            });
    });

    $('.jsDeleteFav_teacher').on('click', function(){
            var _this = $(this),
                favid = _this.attr('data-favid');
            $.ajax({
                    cache: false,
                    type: "POST",
                    url: "/org/add_fav/",
                    data: {
                        fav_type: 3,
                        fav_id: favid,
                        csrfmiddlewaretoken: '{{ csrf_token }}'
                    },
                    async: true,
                    success: function(data) {
                        Dml.fun.winReload();
                    }
                });
        });


    $('.jsDeleteFav_org').on('click', function(){
            var _this = $(this),
                favid = _this.attr('data-favid');
            $.ajax({
                    cache: false,
                    type: "POST",
                    url: "/org/add_fav/",
                    data: {
                        fav_type: 2,
                        fav_id: favid,
                        csrfmiddlewaretoken: '{{ csrf_token }}'
                    },
                    async: true,
                    success: function(data) {
                        Dml.fun.winReload();
                    }
                });
        });
</script>

至此,我的收藏3个相关页面就实现了,下面我们来配置我的消息页面。

我的消息

老规矩,让我们的usercenter_message.html继承我们的usercenter_base.html页面:

然后就是先配置path,打开users/urls.py文件,新增以下代码:

代码语言:txt
复制
from .views import MyMessageView

 # 我的消息url
    path("mymessage/", MyMessageView.as_view(), name="mymessage"),

然后打开users/views.py文件,新增以下代码:

代码语言:txt
复制
from pure_pagination import Paginator, EmptyPage, PageNotAnInteger
from operation.models import UserMessage

# 我的消息函数
class MyMessageView(LoginRequiredMixin, View):
    login_url = '/login/'
    redirect_field_name = 'next'

    def get(self, request):
        # 取出所有的信息
        all_messages = UserMessage.objects.filter(user=request.user.id)
        # 对消息进行分页,尝试获取前端get请求传递过来的page参数
        # 如果是不合法的配置参数则默认返回第一页
        try:
            page = request.GET.get('page', 1)
        except PageNotAnInteger:
            page = 1
        # 这里指从all_courses中取出来,每页显示9个
        p = Paginator(all_messages, 9, request=request)

        messages = p.page(page)

        return render(request, "usercenter-message.html", {
            "messages": messages,
        })

接着打开usercenter_base.html页面,我们修改页面跳转链接:

然后打开usercenter_message.html页面,我们修改页面信息如下:

然后打开users/views.py文件,找到我们之前的注册函数,新增以下代码:

代码语言:txt
复制
# 写入欢迎注册的信息
            user_message = UserMessage()
            user_message.user = user_profile.id
            user_message.message = "欢迎注册慕海学习网!"
            user_message.save()
也就是这样:

接下来打开xadmin后台,我们对应id给其加几条信息,然后刷新一下我们的页面:

不知道你是否注意到我们页面顶部的小喇叭,这就是未读消息的提示,所以我们需要统计一下未读消息的数量。打开users/model.py文件,在UserProfile函数里面新增用于获取用户的未读消息的数量的函数:

代码语言:txt
复制
 def get_unread_nums(self):
        # 获取用户的未读消息的数量
        from operation.models import UserMessage
        return UserMessage.objects.filter(user=self.id).count()
就是这个样子:

然后打开base.html页面,找到并修改信息为图示:

突然刷新一下我们的页面,回到首页,看到有2条信息未读:

然后点击进入个人中心,发现消息没有了,又回到首页,发现有出现了。这是因为我们的消息页面还没配置完,我们需要全部页面配置。

Ctrl+shift+F调出全局搜索,在里面选择.html文件,然后搜索MsgNum,全部修改成那个样子:

至此,本篇关于个人信息相关页面的配置介绍就到此结束,感谢你的赏阅。

本篇笔记对应于第二十三篇代码,对应于github的位置是https://github.com/licheetools/eduline

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于博主
  • 写在前面
  • 我的课程
  • 我的收藏
    • 收藏授课机构
      • 收藏课程机构
        • 收藏授课讲师
          • 收藏公开课程
          • 我的消息
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档