zoukankan      html  css  js  c++  java
  • Django 分类标签查找

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

    simpletag

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    from django import template
    from django.utils.safestring import mark_safe
    
    register = template.Library()
    
    
    @register.simple_tag
    def my_simple_time(v1, v2, v3):
        return v1 + v2 + v3
    
    @register.simple_tag
    def detail1(item,counter,allcount,remainder):
        temp = '''
        <div style=" 205px;">
                <img style=" 205px;height: 220px" src="/%s">
                <p>%s</p>
                <p>%s</p>
                <p>%s</p>
                <p>%s</p>
        </div>
        '''
        if counter%allcount ==remainder:
            temp = temp % (
                item['student__pic'],
                item['student__name'],
                item['student__salary'],
                item['student__company'],
                item['litter_thanks'],
            )
            return mark_safe(temp)
        else:
            return ''
    
    @register.filter
    def detail2(value,args):
        allcount,remainder = args.split(',')
        allcount = int(allcount)
        remainder = int(remainder)
        if value%allcount ==remainder:
            return True
        return False
    
    @register.simple_tag
    def action(current_url,item,index):
        url_list = current_url.split('-')
        if index ==3:
            if str(item['id']) ==url_list[index].split('.')[0]:
                temp = "<a href=%s class='active'>%s</a>"
            else:
                temp = '<a href=%s>%s</a>'
            url_list[index] = str(item['id'])+'.html'
        else:
            if str(item['id']) == url_list[index]:
                temp = "<a href=%s class='active'>%s</a>"
            else:
                temp = '<a href=%s>%s</a>'
            url_list[index] = str(item['id'])
        url_str = '-'.join(url_list)
        temp = temp%(url_str,item['name'])
        return mark_safe(temp)
    
    @register.simple_tag
    def action_all(current_url,index):
        url_list = current_url.split('-')
        if index ==3:
            if url_list[index]=='0.html':
                temp = "<a href=%s class='active'>全部</a>"
            else:
                temp = "<a href=%s >全部</a>"
            url_list[index]= '0.html'
        else:
            if url_list[index] == '0':
                temp = "<a href=%s class='active'>全部</a>"
            else:
                temp = "<a href=%s >全部</a>"
            url_list[index] = '0'
    
        href = '-'.join(url_list)
        temp = temp % (href,)
        return mark_safe(temp)

    admin

    from django.contrib import admin
    from blog import models
    # Register your models here.
    admin.site.register(models.BxSlider)
    admin.site.register(models.Classification)
    #admin.site.register(models.Course)
    admin.site.register(models.Direction)
    #admin.site.register(models.Notice)
    #admin.site.register(models.Recruit)
    admin.site.register(models.Student)
    admin.site.register(models.Studentdetail)
    admin.site.register(models.Video)

    models

    from django.db import models
    
    # Create your models here.
    class BxSlider (models.Model):
        status_choice = (
            (0, '下线'),
            (1, '上线'),
        )
        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/imgs/focus/')
        href = models.CharField(max_length=256)
        creat_date = models.DateTimeField(auto_now_add=True)
    
        class Meta:
            db_table = 'BxSlider'
            verbose_name_plural = '首页轮播'
        def __str__(self):
            return self.name
    
    class Notice(models.Model):
        status_choice=(
            (0,'不显示'),
            (1,'显示'),
        )
        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='最新公告(开班信息等)'
        def __str__(self):
            return self.title
    
    class Course(models.Model):
        status_choice=(
            (0,'下线'),
            (1,'上线'),
        )
        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/imgs/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=46,default='summary')
    
        class Meta:
            db_table='Course'
            verbose_name_plural='课程'
        def __str__(self):
            return self.name
    
    class Recruit(models.Model):
        status_choice=(
            (0,'已过期'),
            (1,'招聘中'),
        )
        status = models.IntegerField(verbose_name='状态',choices=status_choice,default=1)
        weight = models.IntegerField(verbose_name='权重(按从大到小排列)',default=0)
        title = models.CharField(verbose_name='标题',max_length=32)
        salary = models.CharField(verbose_name='薪水',max_length=25)
        conpany = models.CharField(max_length=20)
        detail = models.TextField(verbose_name='详细')
        deadline=models.DateField()
        class Meta:
            db_table='Recruit'
            verbose_name_plural='招聘信息'
        def __str__(self):
            return self.title
    
    class Student(models.Model):
        status_choice = (
            (0, '不显示'),
            (1, '显示'),
        )
        status = models.IntegerField(verbose_name='状态',choices=status_choice,default=0)
        weight = models.IntegerField(verbose_name='权重(按从大到小排列)',default=0)
        name = models.CharField(verbose_name='名称',max_length=32,db_index=True,unique=True)
        pic = models.ImageField(verbose_name='头像',upload_to='./static/imgs/stu_pic/',null=True)
        company = models.CharField(verbose_name='就业单位', max_length=32)
        salary = models.CharField(verbose_name='薪水', max_length=25)
        class Meta:
            db_table='Student'
            verbose_name_plural='学生信息'
        def __str__(self):
            return self.name
    
    class Studentdetail(models.Model):
        student = models.OneToOneField('Student')
        weight = models.IntegerField(verbose_name='权重(按从大到小排列)',default=0)
        litter_thanks= models.CharField(verbose_name='感谢信',max_length=256)
        class Meta:
            db_table='Studentdetail'
            verbose_name_plural='学生更多信息'
        def __str__(self):
            return self.student.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='课程视频分类'
        def __str__(self):
            return self.name
    
    class Video(models.Model):
        status_choice=(
            (0,'下线'),
            (1,'上线'),
        )
        level_choice=(
            (1,'初级'),
            (2,'中级'),
            (3,'高级'),
        )
        status = models.IntegerField(verbose_name='状态',choices=status_choice,default=1)
        level = models.IntegerField(verbose_name='状态', choices=level_choice, default=1)
        weight = models.IntegerField(verbose_name='权重(按从大到小排列)',default=0)
        img = models.ImageField(verbose_name='图像',upload_to='./static/imgs/video/',null=True,blank=True)
        name = models.CharField(verbose_name='名称',max_length=32,db_index=True,unique=True)
        summary = models.CharField(verbose_name='简介',max_length=46,default='summary')
        title = models.CharField(verbose_name='标题', max_length=32)
        href = models.CharField(max_length=256)
        creat_date = models.DateTimeField(auto_now_add=True)
        classification = models.ForeignKey('Classification',null=True,blank=True)
        class Meta:
            db_table='Video'
            verbose_name_plural='课程视频'
        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='视频方向'
        def __str__(self):
            return self.name

    views

    from django.shortcuts import render,HttpResponse
    from blog import models
    import json
    # Create your views here.
    def index(request):
        queryset_dict = models.BxSlider.objects.filter(status=1).values('img','href','name')
        return render(request,'index.html',{'queryset_dict':queryset_dict})
    
    def student(request):
        #student
        # studentdetail
        detail_list = models.Studentdetail.objects.filter(student__status=1).values('litter_thanks','student__name','student__company','student__salary','student__pic')
        print(detail_list)
        return render(request,'student.html',{'detail_list':detail_list})
    
    def student1(request):
        if request.method =='POST':
            detail_list = models.Studentdetail.objects.filter(student__status=1).values('litter_thanks', 'student__name',
                                                                                        'student__company',
                                                                                        'student__salary', 'student__pic')
            detail_list = list(detail_list)
            return HttpResponse(json.dumps(detail_list))
        #student
        # studentdetail
        #detail_list = models.Studentdetail.objects.filter(student__status=1).values('litter_thanks','student__name','student__company','student__salary','student__pic')
    
        return render(request,'student1.html')
    
    def video(request,*args,**kwargs):
        current_url = request.path
        q = {}
        q['status'] = 1
        drection_list = models.Direction.objects.all().values('id','name')
        if kwargs.get('direction_id')=='0':
            classifi_list = models.Classification.objects.all().values('id', 'name')
            if kwargs.get('class_id')=='0':
                pass
            else:
                q['classification_id__in'] = [kwargs.get('class_id'),]
        else:
            if kwargs.get('class_id')=='0':
                obj = models.Direction.objects.get(id = int(kwargs.get('direction_id')))
                classifi_list = obj.classification.all().values('id', 'name')
                id_list = list(map(lambda x: x['id'], classifi_list))
                q['classification_id__in']=id_list
            else:
                obj = models.Direction.objects.get(id=int(kwargs.get('direction_id')))
                classifi_list = obj.classification.all().values('id', 'name')
                id_list = list(map(lambda x:x['id'],classifi_list))
                q['classification_id__in'] = [kwargs.get('class_id'),]
                if int(kwargs.get('class_id')) in id_list:
                    pass
                else:
                    url_part_list = current_url.split('-')
                    url_part_list['2']='0'
                    current_url = '-'.join(url_part_list)
        level_id = int(kwargs.get('level_id'))
        if level_id ==0:
            pass
        else:
            q['level']= level_id
        video_list = models.Video.objects.filter(**q).values('title','summary','img','href')
    
        ret = map(lambda x:{'id':x[0],'name':x[1]},models.Video.level_choice)
        leve_list =list(ret)
        print(kwargs)
    
        return render(request, 'video.html',{'drection_list':drection_list,
                                             'classifi_list':classifi_list,
                                             'leve_list':leve_list,
                                             'current_url':current_url,
                                             'video_list':video_list})

    video.html

    {% load xxx %}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            a{
                padding: 5px;
                display: inline-block;
            }
            .active{
                background-color: orange;
                color: white;
            }
            .item{
                display: inline-block;
                width: 205px;
                height: 240px;
            }
            .item img{
                border: 0;
                width:205px;
                height:240px;
            }
        </style>
    </head>
    <body>
    <h3>选择:</h3>
    <hr/>
    <div>
        {% action_all current_url 1 %}
        {% for item in drection_list %}
            {% action current_url item 1 %}
        {% endfor %}
    </div>
    <div>
        {% action_all current_url 2 %}
        {% for item in classifi_list %}
            {% action current_url item 2 %}
        {% endfor %}
    </div>
    <div>
        {% action_all current_url 3 %}
        {% for item in leve_list %}
            {% action current_url item 3 %}
        {% endfor %}
    </div>
    <h3>视频:</h3>
    <hr/>
    {% for item in video_list %}
    <a class="item" href="{{ item.href }}">
        <img src="/{{ item.img }}"/>
        <p>{{ item.title }}</p>
        <p>{{ item.summary }}</p>
    </a>
    {% endfor %}
    </body>
    </html>

    index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link href="/static/plugins/bxslider/jquery.bxslider.css" rel="stylesheet"/>
    </head>
    <body>
    <ul class="bxslider">
        {% for item in queryset_dict %}
        <li>
            <a href="{{ item.href }}">
                <img src="/{{ item.img }}" alt="{{ item.name }}">
            </a>
        </li>
        {% endfor %}
    </ul>
    <script src="/static/js/jquery-3.2.1.min.js"></script>
    <script src="/static/plugins/bxslider/jquery.bxslider.min.js"></script>
    <script>
        $(document).ready(function(){
        $('.bxslider').bxSlider();
    });
    </script>
    </body>
    </html>

    student

    {% load xxx %}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
        .clearfix:after{
            content: '.';
            visibility:hidden;
            height: 0;
            clear: both;
            display: block;
        }
        </style>
    </head>
    <body>
    
    <div style="margin: 0 auto; 980px" class="clearfix">
        <div style=" 245px;float:left;">
            {% for item in detail_list %}
                {% detail1 item forloop.counter 4 1 %}
            {% endfor %}
        </div>
        <div style=" 245px;float:left;">
            {% for item in detail_list %}
                {% detail1 item forloop.counter 4 2 %}
            {% endfor %}
        </div>
        <div style=" 245px;float:left;">
            {% for item in detail_list %}
                {% detail1 item forloop.counter 4 3 %}
            {% endfor %}
        </div>
        <div style=" 245px;float:left;">
            {% for item in detail_list %}
                {% if forloop.counter|detail2:'4,0' %}
                <div style=" 205px;">
                    <img style=" 205px;height: 220px" src="/{{ item.student__pic }}">
                    <p>{{ item.student__name }}</p>
                    <p>{{ item.student__salary }}</p>
                    <p>{{ item.student__company }}</p>
                    <p>{{ item.litter_thanks }}</p>
                </div>
                {% endif %}
            {% endfor %}
        </div>
    </div>
    
    </body>
    </html>
  • 相关阅读:
    开源工作流 Bonita BPM (JAVA)
    java怎么样判断一个进程是否已近结束
    struts2 Annotation 实现文件下载功能 文件名中文乱码问题
    struts2中s:radio标签的使用 Map
    Win7下声音由小逐渐变大
    JSTL EL 详解
    CHM格式 打开后不显示内容的解决办法
    jquery radio 判断是否被选中的例子
    火狐的funmoods都已经清除了,config里怎么还有他它的项目
    由MyEclipse内存不足谈谈JVM内存
  • 原文地址:https://www.cnblogs.com/Erick-L/p/6854850.html
Copyright © 2011-2022 走看看