url.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'^index/', views.index),
# url(r'^student/', views.student),
# url(r'^student1.html', views.student1),
#direction_id,classification_id,level_id作为参数传递给def video(request, *arg, **kwargs):
url(r'^video-(?P<direction_id>\d+)-(?P<classification_id>\d+)-(?P<level_id>\d+).html', views.video),
]
 from django.db import models

 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

modles.py

 import json
from django.shortcuts import render,HttpResponse
from app01 import models
def video(request,*args,**kwargs):
print("www",kwargs)#**kwargs为字典:{'direction_id': '0', 'classification_id': '0', 'level_id': '0'}
print(request.path)
# 获取当前url:/video-0-0-0.html
request_path = request.path#获取当前url:/video-0-0-0.html q = {}
q['status'] = 1 class_id = int(kwargs.get('classification_id'))#获取视频分类__方向id direction_list = models.Direction.objects.all().values('id','name')#获取所有方向表的id和name if kwargs.get('direction_id') == '':#如果方向__视频分类id等于0
# 方向选择全部
print('方向等于0')
class_list = models.Classification.objects.all().values('id', 'name')#获取所有视频分类的id和name
if kwargs.get('classification_id') == '':#如果视频分类__方向id等于0
pass
else:
# 当前分类是 1
q['classification_id__in'] = [class_id,] else:
print('方向不为0')
# 方向选择某一个方向,
# 如果分类是0
if kwargs.get('classification_id') == '':
print('分类为0')
obj = models.Direction.objects.get(id=int(kwargs.get('direction_id')))#获取当前方向id
class_list = obj.classification.all().values('id', 'name')#获取当前方向的视频分类id和name
print(class_list)
id_list = list(map(lambda x: x['id'], class_list))#获取x['id']的值
print(id_list)
q['classification_id__in'] = id_list
else: obj = models.Direction.objects.get(id=int(kwargs.get('direction_id')))
class_list = obj.classification.all().values('id', 'name')
id_list = list(map(lambda x:x['id'], class_list))
q['classification_id__in'] = [class_id,]
print('分类不为0')
# 当前分类如果在获取的所有分类中,则方向下的所有相关分类显示
# 当前分类如果不在获取的所有分类中,
# if kwargs.get('classification_id') in
if int(kwargs.get('classification_id')) in id_list:
pass
else:
print('不再,获取指定方向下的所有分类:选中的回到全部')
url_part_list = request_path.split('-')
url_part_list[2] = ''
request_path = '-'.join(url_part_list) level_id = int(kwargs.get('level_id'))
if level_id == 0:
pass
else:
q['level'] = level_id # models.Video.objects.filter(status=1)
video_list = models.Video.objects.filter(**q).values('title','summary', 'img', 'href') # level_list = models.Video.level_choice ret = map(lambda x:{"id": x[0], 'name': x[1]}, models.Video.level_choice)
level_list = list(ret)
return render(request, 'video.html', {'direction_list': direction_list,
'class_list': class_list,
'level_list': level_list,
'current_url': request_path,
"video_list": video_list})

views

{% load xx %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
a{
display: inline-block;
padding: 8px;
}
.active{
background-color: coral;
color: white;
}
.item{
display: inline-block;
width: 300px;
height: 400px;
}
.item img{
border: 0;
width: 300px;
height: 280px;
overflow: hidden;
}
</style>
</head>
<body>
<h3>选择:</h3>
<div>
{% action_all current_url 1 %} :
{% for item in direction_list %} {% action1 current_url item %}
{% endfor %}
</div>
<div>
{% action_all current_url 2 %} :
{% for item in class_list %} {% action2 current_url item %}
{% endfor %}
</div>
<div>
{% action_all current_url 3 %} :
{% for item in level_list %}
{% action3 current_url item %}
{% endfor %}
</div>
<hr />
<div>

video.html

from django import template
from django.utils.safestring import mark_safe
from django.template.base import Node, TemplateSyntaxError register = template.Library()
@register.simple_tag
def action1(current_url, item):
# videos-0-0-1.html
# item: id name
# video- 2 -0-0.html
url_part_list = current_url.split('-') # 如果当前url中第一个位置 video-2-0-0.html
if str(item['id']) == url_part_list[1]:
temp = "<a href='%s' class='active'>%s</a>"
else:
temp = "<a href='%s'>%s</a>" url_part_list[1] = str(item['id']) ur_str = '-'.join(url_part_list)
temp = temp %(ur_str, item['name'])
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中第一个位置 video-2-0-0.html
if str(item['id']) == url_part_list[2]:
temp = "<a href='%s' class='active'>%s</a>"
else:
temp = "<a href='%s'>%s</a>" url_part_list[2] = str(item['id'])
ur_str = '-'.join(url_part_list)
temp = temp %(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中第三个位置 video-2-0-0.html
if str(item['id']) == url_part_list[3].split('.')[0]:
temp = "<a href='%s' class='active'>%s</a>"
else:
temp = "<a href='%s'>%s</a>" url_part_list[3] = str(item['id']) + '.html' ur_str = '-'.join(url_part_list)
temp = temp %(ur_str, item['name'])
return mark_safe(temp) @register.simple_tag
def action_all_1(current_url):
"""
获取当前url,video-1-1-2.html
:param current_url:
:param item:
:return:
"""
url_part_list = current_url.split('-')
if url_part_list[1] == "":
temp = "<a href='%s' class='active'>全部</a>"
else:
temp = "<a href='%s'>全部</a>" url_part_list[1] = ""
# video 0 1 2.html
href = '-'.join(url_part_list) temp = temp % (href,)
return mark_safe(temp) @register.simple_tag
def action_all_2(current_url):
"""
获取当前url,video-1-1-2.html
:param current_url:
:param item:
:return:
"""
url_part_list = current_url.split('-') if url_part_list[2] == "":
temp = "<a href='%s' class='active'>全部</a>"
else:
temp = "<a href='%s'>全部</a>" url_part_list[2] = ""
# video 0 1 2.html
href = '-'.join(url_part_list) temp = temp % (href,)
return mark_safe(temp) @register.simple_tag
def action_all_3(current_url):
"""
获取当前url,video-1-1-2.html
:param current_url:
:param item:
:return:
"""
url_part_list = current_url.split('-')
# video 0 1 2.html
if url_part_list[3] == "0.html":
temp = "<a href='%s' class='active'>全部</a>"
else:
temp = "<a href='%s'>全部</a>" url_part_list[3] = "0.html" href = '-'.join(url_part_list) temp = temp % (href,)
return mark_safe(temp) @register.simple_tag
def action_all(current_url,index):
"""
获取当前url,video-1-1-2.html
:param current_url:
:param item:
:return:
"""
url_part_list = current_url.split('-')
if index == 3:
if url_part_list[index] == "0.html":
temp = "<a href='%s' class='active'>全部</a>"
else:
temp = "<a href='%s'>全部</a>" url_part_list[index] = "0.html"
else:
if url_part_list[index] == "":
temp = "<a href='%s' class='active'>全部</a>"
else:
temp = "<a href='%s'>全部</a>" url_part_list[index] = "" href = '-'.join(url_part_list) temp = temp % (href,)
return mark_safe(temp)

xx.py

Django模板语言之组合搜索的更多相关文章

  1. Django模板语言初识

    一.Django框架简介 1.MVC框架 MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控 ...

  2. Django模板语言(常用语法规则)

    Django模板语言 The Django template language 模板中常用的语法规则 {最新版本的Django语法可能有改变,不支持的操作可能支持了.[HTML教程 - 基本元素/标签 ...

  3. Django模板语言与视图(view)

    常用语法 {{  }}和{% %} 变量相关的用{{}} , 逻辑相关的用{% %} 变量 在Django的模板语言中按此语法使用:{{ 变量名 }}. 当模版引擎遇到一个变量,它将计算这个变量,然后 ...

  4. 10:django 模板语言

    Django的模板语言的目的是取得力量和易用性之间的平衡,与其他的模板语言相比,django模板语言显得更简单,更专一, django模板系统由模板,变量,过滤器,标签,注释等主要部分组成 模板 一个 ...

  5. Django模板语言,标签整理

    Django模板语言 标签 内置标签引用 1. autoescape 控制自动转义是否可用. 这种标签带有任何 on 或 off 作为参数的话,他将决定转义块内效果. 该标签会以一个endautoes ...

  6. Django模板语言(一)

    1,Django模板语言 1.1>基础语法:1.1.1,变量相关:{{ 变量名 }},1.1.2,逻辑相关{% ... %} 在Django模板语言中按此语法使用:{{ 变量名 }},当模板引擎 ...

  7. django框架基础-django模板语言-长期维护

    ##################     常用的模板语言       ####################### # django的模板语言, # # 只需要记两种特殊符号: # # {{ } ...

  8. 6月15日 python学习总结 Django模板语言相关内容

    Django模板语言相关内容   Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} ...

  9. Django模板语言的复用

    一.include标签 由于在项目中,往往会出现多个页面拥有一个或几个相同的页面版块,或是一个页面多个页面版块是相同的,基于这个问题,我们可以采用模板语言复用include标签来帮我们解决,这样就避免 ...

随机推荐

  1. include和application

    include指令 语法:<%@ include  file=”路径+文件名” %> 把指定的文件包含到当前jsp中. application(应用的全局变量) 实现用户之间的数据共享 常 ...

  2. 持久层框架:MyBatis 3.2(1)

    MyBatis 的前身就是 iBatis .是一个数据持久层(ORM)框架. iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架.iBATIS提供的持久 ...

  3. CFile与CArchive区别

    一,区别 CFile是直接与磁盘打交道的一个文件对象,可以处理文本和二进制文件 CArchive将CFile作为自己的一个参数,通过该参数可以实现文本,二进制甚至继承至COject对象的类的本地存储和 ...

  4. Lua基础---lua字符串库函数详解,实例及正则表达式

    参考这个网友写的,比较简单容易理解. http://blog.csdn.net/wlgy123/article/details/49206183

  5. VS2017连接到中国区的Azure

    1. 安装Azure Environment Select扩展 2. 选择中国区的Azure 3. 之后就可以使用中国区的账号登录了 参考链接:https://docs.azure.cn/zh-cn/ ...

  6. Epoll 实例

    服务端调试: [test@cs2 epoll]$ g++ epoll_server.cpp -o epoll_server -lpthread [test@cs2 epoll]$ ./epoll_se ...

  7. 安装使用lynis扫描Linux的安全漏洞

    Lynis是Linux平台上的一款安全漏洞扫描工具.它可以扫描系统的安全漏洞.收集系统信息.安装的软件信息.配置问题.没有设置密码的用户和防火墙等等. Lynis是流行可靠的安全扫描工具. 前不久,L ...

  8. Java程序员必须掌握的知识

    1.语法:Java程序员必须比较熟悉语法,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息 知道是什么样的语法错误并且知道任何修正. 2.命令:必须熟悉JDK带的一些常用命令及其常用选项, ...

  9. LG5055 【模板】可持久化文艺平衡树

    题意 您需要写一种数据结构,来维护一个序列,其中需要提供以下操作(对于各个以往的历史版本): 在第 pp 个数后插入数 xx . 删除第 pp 个数. 翻转区间 [l,r][l,r],例如原序列是 { ...

  10. Linux LED字符设备驱动

    // 申请IO资源 int gpio_request(unsigned gpio, const char *label); // 释放IO资源 void gpio_free(unsigned gpio ...