zoukankan      html  css  js  c++  java
  • 三个方向组合的筛选

    #url=video2.0-0-0.html,是按按照,0,1这些来排序的

    url(r'^video2-(?P<dr_id>d+)-(?P<level_id>d+)-(?P<category_id>d+).html',views.video2,name='table_video2'),
    #video/views.py
    def video2(request,*args,**kwargs):
        #0-0-0.html
        #1-0-0.html
        #1-1-0.html
        dr_id = kwargs.get("dr_id")
        cg_id = kwargs.get("category_id")
        lv_id = kwargs.get("level_id")
        condition = {}
        direction_list = models.Direction.objects.all()
        level_list = models.Level.objects.all()
        if dr_id == "0":#未选择方向
    
            category_list = models.Category.objects.all()
            if cg_id == "0":#未选择分类
                pass
            else: #未选择方向,选择了分类
                condition["category_id"] =cg_id
        else:#选择方向
            category_list = models.Category.objects.filter(direction=dr_id)
            temp=category_list.values_list("id")
            #print(v)
            cg_id_list = list(zip(*temp))[0]
            #print(cg_id_list)
            if cg_id == "0":#选择了方向没有选择分类
                condition["category_id__in"]=cg_id_list
            else: #选择了方向也选择了分类
                if int(cg_id) in cg_id_list:
                    condition["category_id"]=cg_id
                else:#请求的分类不在所有的分类中
                    condition["category_id__in"] = cg_id_list
                    kwargs["category_id"] = "0"
        if lv_id == "0":
            pass
        else:
            condition["level_id"]=lv_id
        result = models.Video.objects.filter(**condition)
        print(result)
    
    
        return render(request,"video/video2.html",{"direction_list":direction_list,
                                                   "level_list":level_list,
                                                   "category_list":category_list,
                                                   "arg_list":kwargs})

    利用reverse通过url的name获取url

    #video_tags.py
    #三个条件
    
    from django.urls import reverse
    from django.utils.safestring import mark_safe
    @register.simple_tag
    def direction_tag(direction,arg_dic):
        """
        方向
        :param catagory:
        :param arg_dic:
        :return:
        """
        url = reverse("table_video2",kwargs={"dr_id":direction.id,"level_id":arg_dic.get("level_id"),"category_id":arg_dic.get("category_id")})
        if str(direction.id) == arg_dic.get("dr_id"):
    
            tag = '''<a href="%s" style="color:red">%s</a>'''%(url,direction.name)
            return mark_safe(tag)
        else:
            tag = '''<a href="%s">%s</a>'''%(url,direction.name)
            return mark_safe(tag)
    
    @register.simple_tag
    def three_catagory_tag(catagory,arg_dic):
        """
        等级
        :param catagory:
        :param arg_dic:
        :return:
        """
        url = reverse("table_video2",kwargs={"dr_id":arg_dic.get("dr_id"),"level_id":arg_dic.get("level_id"),"category_id":catagory.id})
        if str(catagory.id) == arg_dic.get("category_id"):
    
            tag = '''<a href="%s" style="color:red">%s</a>'''%(url,catagory.name)
            return mark_safe(tag)
        else:
            tag = '''<a href="%s">%s</a>'''%(url,catagory.name)
            return mark_safe(tag)
    
    
    @register.simple_tag
    def three_level_tag(level,arg_dic):
        url = reverse("table_video2",kwargs={"dr_id":arg_dic.get("dr_id"),"level_id":level.id,"category_id":arg_dic.get("category_id")})
    
        if str(level.id) == arg_dic.get("level_id"):
            tag = '''<a href="%s" style="color:red">%s</a>'''%(url,level.name)
            return mark_safe(tag)
        else:
            tag = '''<a href="%s">%s</a>'''%(url,level.name)
            return mark_safe(tag)
    
    @register.simple_tag
    def three_tag_all(arg_dic,key):
        if key == "dr_id":
            url = reverse("table_video2", kwargs={"dr_id":0,"level_id": arg_dic.get("level_id"), "category_id": arg_dic.get("category_id")})
        elif key == "category_id":#category_id
            url = reverse("table_video2", kwargs={"dr_id":arg_dic.get("dr_id"),"level_id": arg_dic.get("level_id"), "category_id":0})
        elif key == "level_id":
            url = reverse("table_video2", kwargs={"dr_id":arg_dic.get("dr_id"),"level_id":0 , "category_id":arg_dic.get("category_id")})
        else:
            url=""
        if arg_dic.get(key) == "0":
            tag = '''<a href="%s" style="color:red">全部</a>'''%(url,)
        else:
            tag = '''<a href="%s">全部</a>''' % (url,)
    
        return mark_safe(tag)
    #video_tags.py
    #三个条件
    
    from django.urls import reverse
    from django.utils.safestring import mark_safe
    @register.simple_tag
    def direction_tag(direction,arg_dic):
        """
        方向
        :param catagory:
        :param arg_dic:
        :return:
        """
        url = reverse("table_video2",kwargs={"dr_id":direction.id,"level_id":arg_dic.get("level_id"),"category_id":arg_dic.get("category_id")})
        if str(direction.id) == arg_dic.get("dr_id"):
    
            tag = '''<a href="%s" style="color:red">%s</a>'''%(url,direction.name)
            return mark_safe(tag)
        else:
            tag = '''<a href="%s">%s</a>'''%(url,direction.name)
            return mark_safe(tag)
    
    @register.simple_tag
    def three_catagory_tag(catagory,arg_dic):
        """
        等级
        :param catagory:
        :param arg_dic:
        :return:
        """
        url = reverse("table_video2",kwargs={"dr_id":arg_dic.get("dr_id"),"level_id":arg_dic.get("level_id"),"category_id":catagory.id})
        if str(catagory.id) == arg_dic.get("category_id"):
    
            tag = '''<a href="%s" style="color:red">%s</a>'''%(url,catagory.name)
            return mark_safe(tag)
        else:
            tag = '''<a href="%s">%s</a>'''%(url,catagory.name)
            return mark_safe(tag)
    
    
    @register.simple_tag
    def three_level_tag(level,arg_dic):
        url = reverse("table_video2",kwargs={"dr_id":arg_dic.get("dr_id"),"level_id":level.id,"category_id":arg_dic.get("category_id")})
    
        if str(level.id) == arg_dic.get("level_id"):
            tag = '''<a href="%s" style="color:red">%s</a>'''%(url,level.name)
            return mark_safe(tag)
        else:
            tag = '''<a href="%s">%s</a>'''%(url,level.name)
            return mark_safe(tag)
    
    @register.simple_tag
    def three_tag_all(arg_dic,key):
        if key == "dr_id":
            url = reverse("table_video2", kwargs={"dr_id":0,"level_id": arg_dic.get("level_id"), "category_id": arg_dic.get("category_id")})
        elif key == "category_id":#category_id
            url = reverse("table_video2", kwargs={"dr_id":arg_dic.get("dr_id"),"level_id": arg_dic.get("level_id"), "category_id":0})
        elif key == "level_id":
            url = reverse("table_video2", kwargs={"dr_id":arg_dic.get("dr_id"),"level_id":0 , "category_id":arg_dic.get("category_id")})
        else:
            url=""
        if arg_dic.get(key) == "0":
            tag = '''<a href="%s" style="color:red">全部</a>'''%(url,)
        else:
            tag = '''<a href="%s">全部</a>''' % (url,)
    
        return mark_safe(tag)
    #video2.html
    <!DOCTYPE html>
    <html lang="en">
    {% load video_tags %}
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <h1>筛选条件</h1>
        <div class="filtered">
            <div>
                {% three_tag_all arg_list "dr_id" %}
                {% for direction in direction_list%}
                    {% direction_tag direction arg_list %}
                {% endfor%}
            </div>
            <div>
                {% three_tag_all arg_list "category_id" %}
                {% for category in category_list%}
                    {% three_catagory_tag category arg_list %}
                {% endfor %}
            </div>
    
            <div>
                {% three_tag_all arg_list "level_id" %}
                {% for level in level_list%}
                    {% three_level_tag level arg_list %}
                {% endfor%}
            </div>
    
        </div>
        <h1>查询内容</h1>
        <div class="container">
            {%for result in results%}
            <div style=" 100px;height: 260px;float: left">
                <img src="{{result.img}}" style=" 100px;height: 150px">
                <p>{{result.title}}</p>
                <p>{{result.summary}}</p>
            </div>
            {%endfor%}
        </div>
    
    </body>
    </html>

    后来创建的表:

    class Level(models.Model):
        """等级"""
        name = models.CharField(max_length=32)
    
    class Direction(models.Model):
        """方向"""
        name = models.CharField(max_length=32)
        d_2_c = models.ManyToManyField("Category")
    
    class Category(models.Model):
        """分类"""
        name = models.CharField(max_length=32)
    
    class Video(models.Model):
        """视频"""
        level = models.ForeignKey("Level",on_delete=models.CASCADE)
        category = models.ForeignKey("Category",on_delete=models.CASCADE)
        title = models.CharField(verbose_name="标题",max_length=32)
        summary = models.CharField(verbose_name="简介",max_length=32)
        img = models.ImageField(verbose_name="图片",upload_to="D:soft_installpython3python3.7PerfectCRMPerfectcrmstaticsimgVideo")
        href = models.CharField(verbose_name="视频地址",max_length=256)
        create_date = models.DateTimeField(auto_now_add=True)
  • 相关阅读:
    284.软件体系结构集成开发环境的作用
    Socket编程:邮件客户
    Socket编程:UDP Ping
    Socket编程:Web服务器
    计算机网络面试题总结(网络层)
    零基础黑客入门
    MYSQL的安装和配置(Windows)
    计算机网络面试题(分层概念+数据链路层)
    车载网络入侵检测系统设计
    操作系统知识点
  • 原文地址:https://www.cnblogs.com/venvive/p/11521773.html
Copyright © 2011-2022 走看看