zoukankan      html  css  js  c++  java
  • 多筛选框实现

    效果:

    settions.py

    """
    from django.conf.urls import url
    from django.contrib import admin
    from app01 import views
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^video-(?P<direction_id>d+)-(?P<classification_id>d+)-(?P<level_id>d+).html', views.video),
    ]
    

      

    views.py

    def video(request,*args,**kwargs):
        print(kwargs)
        print(request.path)  #/video-1-1-1.html 得到路径
        direction_list = models.Direction.objects.all().values('id','name')
        print(direction_list) #<QuerySet [{'name': '运维自动化', 'id': 1}, {'name': '虚拟化', 'id': 2}, {'name': '全栈', 'id': 3}, {'name': '测试', 'id': 4}]>
    
        class_list = models.Classification.objects.all().values('id', 'name')
        print(class_list) #<QuerySet [{'name': 'Python', 'id': 1}, {'name': 'JavaScript', 'id': 2}, {'name': 'Linux', 'id': 3}, {'name': 'OpenStack', 'id': 4}]>
        # level_list = models.Video.level_choice
        ret = map(lambda x:{"id": x[0], 'name': x[1]}, models.Video.level_choice)
        level_list = list(ret)
        print(level_list)##[{'name': '初级', 'id': 1}, {'name': '中级', 'id': 2}, {'name': '高级', 'id': 3}]
        return render(request, 'video.html', {'direction_list': direction_list,
                                              'class_list': class_list,
                                              'level_list': level_list,
                                              'current_url': request.path})
    

      

    models.py 数据库配置

    from django.db import models
    from  django.shortcuts import render,HttpResponse
    
    # Create your models here.
    from django.db import models
    
    
    class BxSlider(models.Model):
    
        status_choice = (
            (0, u'下线'),
            (1, u'上线'),
        )
        status = models.IntegerField(choices=status_choice, default=1)
        name = models.CharField(max_length=32, db_index=True, unique=True)
        img = models.ImageField(upload_to='./static/images/focus/')
        href = models.CharField(max_length=256)
        create_date = models.DateTimeField(auto_now_add=True)
    
        class Meta:
            db_table = 'BxSlider'
            verbose_name_plural = u'首页轮播'
    
        def __str__(self):
            return self.name
        
    
    class Course(models.Model):
    
        status_choice = (
            (0, u'下线'),
            (1, u'上线'),
        )
        status = models.IntegerField(verbose_name='状态', choices=status_choice, default=1)
    
        weight = models.IntegerField(verbose_name='权重', default=0)
    
        icon = models.ImageField(verbose_name='图标', upload_to='./static/images/icon/', null=True, blank=True)
    
        name = models.CharField(verbose_name='名称', max_length=32, db_index=True, unique=True)
    
        summary = models.CharField(verbose_name='简介', max_length=40, default='summary')
    
    
        class Meta:
            db_table = 'Course'
            verbose_name_plural = u'课程'
    
        def __str__(self):
            return self.name
    
    
    class Student(models.Model):
    
        status_choice = (
            (0, u'下线'),
            (1, u'上线'),
        )
        status = models.IntegerField(verbose_name='状态', choices=status_choice, default=1)
    
        weight = models.IntegerField(verbose_name='权重(按从大到小排列)', default=0)
    
        pic = models.ImageField(verbose_name='学员头像', upload_to='./static/images/student_pic/', null=True, blank=True)
    
        name = models.CharField(verbose_name='名称', max_length=32, db_index=True, unique=True)
    
        company = models.CharField(verbose_name='就业单位', max_length=32)
    
        salary = models.CharField(verbose_name='薪水', max_length=32)
    
        class Meta:
            db_table = 'Student'
            verbose_name_plural = u'学生信息'
    
        def __str__(self):
            return self.name
    
    
    class StudentDetail(models.Model):
    
        student = models.OneToOneField('Student')
    
        weight = models.IntegerField(verbose_name='权重(按从大到小排列)', default=0)
    
        letter_of_thanks = models.CharField(verbose_name='学员感谢信', max_length=256)
    
        class Meta:
            db_table = 'StudentDetail'
            verbose_name_plural = u'学生更多信息'
    
        def __str__(self):
            return self.student.name
    
    
    class Recruit(models.Model):
    
        status_choice = (
            (0, u'已过期'),
            (1, u'招聘中'),
        )
        status = models.IntegerField(verbose_name='状态', choices=status_choice, default=1)
    
        weight = models.IntegerField(verbose_name='权重(按从大到小排列)', default=0)
    
        title = models.CharField(max_length=20)
    
        salary = models.CharField(max_length=20)
    
        company = models.CharField(max_length=20)
    
        detail = models.TextField()
    
        deadline = models.DateField()
    
        class Meta:
            db_table = 'Recruit'
            verbose_name_plural = u'招聘信息'
    
        def __str__(self):
            return self.title
    
    
    class Cooperation(models.Model):
    
        weight = models.IntegerField(verbose_name='权重(按从大到小排列)', default=0)
    
        href = models.CharField(verbose_name='企业连接', max_length=20, default='javascript:void(0)')
    
        logo = models.ImageField(verbose_name='企业LOGO', upload_to='./static/images/cooperation/')
    
        company = models.CharField(verbose_name='公司名称', max_length=20)
    
        class Meta:
            db_table = 'Cooperation'
            verbose_name_plural = u'企业合作'
    
        def __str__(self):
            return self.company
    
    
    class Notice(models.Model):
        status_choice = (
            (0, u'不显示'),
            (1, u'显示'),
        )
        status = models.IntegerField(verbose_name='状态', choices=status_choice, default=0)
        weight = models.IntegerField(verbose_name='权重(按从大到小排列)', default=0)
        title = models.CharField(verbose_name='标题', max_length=32)
        content = models.CharField(verbose_name='简介', max_length=256)
        detail = models.TextField(verbose_name='公告详细', null=True, blank=True)
    
        class Meta:
            db_table = 'Notice'
            verbose_name_plural = u'最新公告(如:开班信息)'
    
        def __str__(self):
            return self.title
    
    
    class Direction(models.Model):
        weight = models.IntegerField(verbose_name='权重(按从大到小排列)', default=0)
        name = models.CharField(verbose_name='名称', max_length=32)
    
        classification = models.ManyToManyField('Classification')
    
        class Meta:
            db_table = 'Direction'
            verbose_name_plural = u'方向(视频方向)'
    
        def __str__(self):
            return self.name
    
    
    class Classification(models.Model):
        weight = models.IntegerField(verbose_name='权重(按从大到小排列)', default=0)
        name = models.CharField(verbose_name='名称', max_length=32)
    
        class Meta:
            db_table = 'Classification'
            verbose_name_plural = u'分类(视频分类)'
    
        def __str__(self):
            return self.name
    
    
    class Video(models.Model):
    
        status_choice = (
            (0, u'下线'),
            (1, u'上线'),
        )
        level_choice = (
            (1, u'初级'),
            (2, u'中级'),
            (3, u'高级'),
        )
        status = models.IntegerField(verbose_name='状态', choices=status_choice, default=1)
        level = models.IntegerField(verbose_name='级别', choices=level_choice, default=1)
        classification = models.ForeignKey('Classification', null=True, blank=True)
    
        weight = models.IntegerField(verbose_name='权重(按从大到小排列)', default=0)
    
        title = models.CharField(verbose_name='标题', max_length=32)
        summary = models.CharField(verbose_name='简介', max_length=32)
        img = models.ImageField(verbose_name='图片', upload_to='./static/images/Video/')
        href = models.CharField(verbose_name='视频地址', max_length=256)
    
        create_date = models.DateTimeField(auto_now_add=True)
    
        class Meta:
            db_table = 'Video'
            verbose_name_plural = u'视频'
    
        def __str__(self):
            return self.title
    

      

    templatetags下的自定义功能文件

    from django import template
    from django.utils.safestring import mark_safe
    
    # from django.template.base import resolve_variable, Node, TemplateSyntaxError
    
    register = template.Library()
    
    
    @register.simple_tag
    def action1(current_url, item):
        # videos-0-0-1.html
        # item: id name
        url_part_list = current_url.split('-')
        print(current_url, 'aaaa')
        print(item, 'iii')  # 更具循环拿出他的{'id': 3, 'name': '全栈'}
        url_part_list[1] = str(item['id'])
        print(url_part_list[1])  # videos-0-0-1.html 索引第二个值
        print(url_part_list)  ##得到['/video', '3', '1', '1.html']
        ur_str = '-'.join(url_part_list)
        temp = "<a href='%s'>%s</a>" % (ur_str, item['name'])
        print(temp)  # <a href='/video-3-1-3.html'>全栈</a>
        return mark_safe(temp)
    
    
    @register.simple_tag
    def action2(current_url, item):
        # videos-0-0-1.html
        # item: id name
        url_part_list = current_url.split('-')
        url_part_list[2] = str(item['id'])
        print(url_part_list)
        ur_str = '-'.join(url_part_list)
        temp = "<a href='%s'>%s</a>" % (ur_str, item['name'])
        return mark_safe(temp)
    
    
    @register.simple_tag
    def action3(current_url, item):
        # videos-0-0-1.html
        # item: id name
        url_part_list = current_url.split('-')
        url_part_list[3] = str(item['id']) + '.html'
        print(url_part_list)
        ur_str = '-'.join(url_part_list)
        temp = "<a href='%s'>%s</a>" % (ur_str, item['name'])
        return mark_safe(temp)
    

      

    video.html

    {% load xx %}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            a{
                display: inline-block;
                padding: 8px;
            }
        </style>
    </head>
    <body>
        <h3>选择:</h3>
        <div>
            <a>全部</a>:
            {% for item in direction_list %}
                 {% action1 current_url item %}
    
            {% endfor %}
        </div>
        <div>
            <a>全部</a>:
            {% for item in class_list %}
    
                {% action2 current_url item %}
            {% endfor %}
        </div>
        <div>
            <a>全部</a>:
            {% for item in level_list %}
                {% action3 current_url item %}
            {% endfor %}
        </div>
        <hr />
        <div>
    
        </div>
        <h3>视频:</h3>
        <hr />
    
    </body>
    </html>
    

      

  • 相关阅读:
    c++之输出文件和输入文件的处理
    C++之输入输出流
    c++之虚析构函数
    c++之虚函数和基类指针
    接口自动化测试框架Karate入门
    uiautomator+cucumber实现移动app自动化测试
    calabash-android Win10 入门笔记
    Page Object 模式编写UiAutomator脚本
    ruby脚本打印日志到rspec的报告文件中
    Ruby跳出多层循环 catch...throw
  • 原文地址:https://www.cnblogs.com/pythonxiaohu/p/5832626.html
Copyright © 2011-2022 走看看