zoukankan      html  css  js  c++  java
  • 18、Django实战第18天:课程机构收藏功能

    这里点击"收藏"也是ajax异步操作,我在operation.model.py中创建了一个用户收藏表,其中fav_id字段,如果我们收藏的是课程,那就是课程id,如果收藏的是课程机构,那就是课程机构id,如果收藏的是讲师,那就是讲师id.

    编辑organization.views.py

    ...
    from operation.models import UserFavorite
    
    
    class UserFavView(View):
        def post(self, request):
            fav_id = request.POST.get('fav_id', 0)
            fav_type = request.POST.get('fav_type', 0)
    
            if not request.user.is_authenticated():
                #判断用户登录状态
                return HttpResponse('{"status":"fail", "msg":"用户未登录"}', content_type='application/json')
    
            exist_records = UserFavorite.objects.filter(user=request.user, fav_id=int(fav_id), fav_type=int(fav_type))
            if exist_records:
                #如果记录已经存在,则表示用户取消收藏
                exist_records.delete()
                return HttpResponse('{"status":"success", "msg":"收藏"}', content_type='application/json')
            else:
                user_fav = UserFavorite()
                if int(fav_id) > 0 and int(fav_type) > 0:
                    user_fav.user = request.user
                    user_fav.fav_id = int(fav_id)
                    user_fav.fav_type = int(fav_type)
                    user_fav.save()
                    return HttpResponse('{"status":"success", "msg":"已收藏"}', content_type='application/json')
                else:
                    return HttpResponse('{"status":"fail", "msg":"收藏出错"}', content_type='application/json')
    

    配置url,编辑organization.urls.py

    ...
    from .views import  UserFavView
    
    urlpatterns = [
        ...
        url(r'add_fav/$', UserFavView.as_view(), name='add_fav'),
    
    ]

    编辑org_base.html

    现在,我们登录后去点击"收藏",收藏按钮会变为"已收藏",如果是未登录状态则会跳转到登录页面,用户收藏表则会有一条记录

    但是!!,当我们再次刷新页面,发现它又变成了"收藏",这是因为我们没有在页面做判断

    首先修改 views给前端传递个参数

    修改前端页面org_bash.html

    收藏功能完成了,最后还剩下一个问题就是,我们已经是登录状态,头部那里还是现实登录、注册,因此我们要修改org_bash.html

     提示:把index下面那些js也拷贝过来放到最后

  • 相关阅读:
    HDU 1423 Greatest Common Increasing Subsequence(LICS入门,只要求出最长数)
    HDU 5455 Fang Fang
    hihoCoder 1234 fractal
    二叉排序树
    最大连续子序列和,最大上升子序列和,最长上升子序列,最长公共子串,最长公共子序列,最长上升公共子序列
    C++ string string string string string string string string string string
    pip安装第三方库
    pip安装时使用国内源,加快下载速度
    pip升级命令
    instanceof -- JS
  • 原文地址:https://www.cnblogs.com/sellsa/p/8539146.html
Copyright © 2011-2022 走看看