项目1
(1)在后台admin里面添加一张图片在前面显示
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href="/static/plugins/bxSlider/jquery.bxslider.css" /> </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-2.1.4.min.js"></script> <script src="/static/plugins/bxSlider/jquery.bxslider.min.js"></script> <script> $(function () { $('.bxslider').bxSlider({ auto: true }); }) </script> </body> </html>
#!/usr/bin/env python # -*- coding:utf-8 -*- 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
from django.contrib import admin # Register your models here. from app01 import models admin.site.register(models.BxSlider)
from django.shortcuts import render from app01 import models # Create your views here. def index(request): # models.BxSlider.objects.filter(status=1) 对象 queryset_dict = models.BxSlider.objects.filter(status=1).values('img','href','name') # queryset_list = models.BxSlider.objects.filter(status=1).values_list('img','href','name') return render(request,'index.html', {'queryset_dict': queryset_dict})
(2)瀑布流
规定四个div 也就是四条,每一条数据都往对应的div里面添加数据
知识点补充:
var idx=1;$('#container').children(':eq('+aa+')').append(div);
jquery的$工厂的参数是字符串,所以可以用字符串拼接变量
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div> </div> <style> .clearfix:after{ content: '.'; visibility: hidden; height: 0; clear: both; display: block; } .c1{ width: 245px; } .c1 img{ width: 245px; height: 200px; } </style> <div id="container" style="margin: 0 auto;width: 980px;" class="clearfix"> <div style="width: 245px;float: left"> </div> <div style="width: 245px;float: left"> </div> <div style="width: 245px;float: left"> </div> <div style="width: 245px;float: left"> </div> </div> <script src="/static/js/jquery-2.1.4.min.js"></script> <script> $(function () { $.ajax({ url: '/student1/', type: 'POST', dataType: 'json', success: function (arg) { //arg = JSON.parse(arg); // arg = JSON.stringify(arg) $.each(arg, function (k,v) { {# k = k + 1;#} var div = document.createElement('div'); div.className = 'c1'; var img = document.createElement('img'); img.src = "/" + v.student__pic; var p = document.createElement('p'); p.innerText = v.letter_of_thanks; div.appendChild(img); div.appendChild(p); var aa= k%4; $('#container').children(':eq('+aa+')').append(div); {# if(k%4 == 1){#} {# $('#container').children(':eq(0)').append(div);#} {# }else if(k%4 == 2){#} {# $('#container').children(':eq(1)').append(div);#} {# }else if(k%4 == 3){#} {# $('#container').children(':eq(2)').append(div);#} {# }else if(k%4 == 0){#} {# $('#container').children(':eq(3)').append(div);#} {# }else{#} {##} {# }#} }) } }) }) </script> </body> </html>
{% load xx %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div>
</div>
<style>
.clearfix:after{
content: '.';
visibility: hidden;
height: 0;
clear: both;
display: block;
}
</style>
<div style="margin: 0 auto;width: 980px;" class="clearfix">
<div style="width: 245px;float: left">
{% for item in detail_list %}
{% detail1 item forloop.counter 4 1 %}
{% endfor %}
</div>
<div style="width: 245px;float: left">
{% for item in detail_list %}
{% detail1 item forloop.counter 4 2 %}
{% endfor %}
</div>
<div style="width: 245px;float: left">
{% for item in detail_list %}
{% detail1 item forloop.counter 4 3 %}
{% endfor %}
</div>
<div style="width: 245px;float: left">
{% for item in detail_list %}
{% if forloop.counter|detail3:"4,0" %}
<div style="width: 245px;">
<img style="width: 245px;height: 200px;" src="/{{ item.student__pic }}">
<p>{{ item.student__name }}</p>
<p>{{ item.student__salary }}</p>
<p>{{ item.letter_of_thanks }}</p>
</div>
{% endif %}
{% endfor %}
</div>
</div>
</body>
</html>
#!/usr/bin/env python # -*- coding:utf-8 -*- 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 my_simple_time(v1,v2,v3): return v1 + v2 + v3 @register.simple_tag def detail1(item,counter,allcount,remainder): temp = """ <div style="width: 245px;"> <img style="width: 245px;height: 200px;" src="/%s"> <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['letter_of_thanks']) return mark_safe(temp) else: return False @register.simple_tag def detail2(counter,allcount,remainder): """ 查看余数是否等于remainder :param counter: :param allcount: :param remainder: :return: """ if counter%allcount == remainder: return True return False @register.filter def detail3(value,arg): """ 查看余数是否等于remainder arg="1,2" :param counter: :param allcount: :param remainder: :return: """ allcount, remainder = arg.split(',') allcount = int(allcount) remainder = int(remainder) if value%allcount == remainder: return True return False
import json from django.shortcuts import render,HttpResponse from app01 import models # Create your views here. def index(request): # models.BxSlider.objects.filter(status=1) 对象 queryset_dict = models.BxSlider.objects.filter(status=1).values('img','href','name') # queryset_list = models.BxSlider.objects.filter(status=1).values_list('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('letter_of_thanks',"student__name","student__salary",'student__company', '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('letter_of_thanks', "student__name", "student__salary", 'student__company', '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('letter_of_thanks',"student__name","student__salary",'student__company', 'student__pic') return render(request,'student1.html')
(3)选择栏

不同的选项对应不同的url url设置
1.1 获取url 传递给html 通过静态方法处理
每个a标签有个属于自己的地址是永久不变的
a标签的href需要自己拼接后返回
1.2 选择哪个显示哪个 根据url 判断选择的啥 从数据库筛选数据传递给页面
全部代码
import json from django.shortcuts import render,HttpResponse from app01 import models # Create your views here. def index(request): # models.BxSlider.objects.filter(status=1) 对象 queryset_dict = models.BxSlider.objects.filter(status=1).values('img','href','name') # queryset_list = models.BxSlider.objects.filter(status=1).values_list('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('letter_of_thanks',"student__name","student__salary",'student__company', '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('letter_of_thanks', "student__name", "student__salary", 'student__company', '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('letter_of_thanks',"student__name","student__salary",'student__company', 'student__pic') return render(request,'student1.html') def video(request,*args,**kwargs): print(kwargs) print(request.path) request_path = request.path direction_list = models.Direction.objects.all().values('id','name') if kwargs.get('direction_id') == '0': # 方向选择全部 print('方向等于0') class_list = models.Classification.objects.all().values('id', 'name') else: print('方向不为0') # 方向选择某一个方向, # 如果分类是0 if kwargs.get('classification_id') == '0': print('分类为0') obj = models.Direction.objects.get(id=int(kwargs.get('direction_id'))) class_list = obj.classification.all().values('id', 'name') 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)) 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] = '0' request_path = '-'.join(url_part_list) # 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})
#!/usr/bin/env python # -*- coding:utf-8 -*- 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 my_simple_time(v1,v2,v3): return v1 + v2 + v3 @register.simple_tag def detail1(item,counter,allcount,remainder): temp = """ <div style="width: 245px;"> <img style="width: 245px;height: 200px;" src="/%s"> <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['letter_of_thanks']) return mark_safe(temp) else: return "" @register.simple_tag def detail2(counter,allcount,remainder): """ 查看余数是否等于remainder :param counter: :param allcount: :param remainder: :return: """ if counter%allcount == remainder: return True return False @register.filter def detail3(value,arg): """ 查看余数是否等于remainder arg="1,2" :param counter: :param allcount: :param remainder: :return: """ allcount, remainder = arg.split(',') allcount = int(allcount) remainder = int(remainder) if value%allcount == remainder: return True return False @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] == "0": temp = "<a href='%s' class='active'>全部</a>" else: temp = "<a href='%s'>全部</a>" url_part_list[1] = "0" # 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] == "0": temp = "<a href='%s' class='active'>全部</a>" else: temp = "<a href='%s'>全部</a>" url_part_list[2] = "0" # 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] == "0": temp = "<a href='%s' class='active'>全部</a>" else: temp = "<a href='%s'>全部</a>" url_part_list[index] = "0" href = '-'.join(url_part_list) temp = temp % (href,) return mark_safe(temp)
{% 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;
}
</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>
</div>
<h3>视频:</h3>
<hr />
</body>
</html>
"""oldboyedu URL Configuration The `urlpatterns` list routes URLs to views. For more information please see: https://docs.djangoproject.com/en/1.9/topics/http/urls/ Examples: Function views 1. Add an import: from my_app import views 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') Class-based views 1. Add an import: from other_app.views import Home 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') Including another URLconf 1. Import the include() function: from django.conf.urls import url, include 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) """ 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), url(r'^video-(?P<direction_id>\d+)-(?P<classification_id>\d+)-(?P<level_id>\d+).html', views.video), ]
from django.db import models # 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
(4)地图显示
需要调用腾讯的api 只需要导入相应的js和规定的function
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="contact-map-1" style="width: 500px;height: 500px"> <div><a target="_blank" href="http://apis.map.qq.com/uri/v1/marker?marker=coord:40.149730,116.29176;title:老男孩教育;addr:沙河青年创业大厦15层"><i class="fa fa-search-plus"></i> 查看完整地图</a></div> </div> <script src="jquery-2.1.4.min.js"></script> <script charset="utf-8" src="http://map.qq.com/api/js?v=2.exp"></script> <script> $(function(){ initMap(40.149730,116.291760,'contact-map-1'); }); function initMap(argx,argy,mapid) { var center = new qq.maps.LatLng(argx, argy); var map = new qq.maps.Map(document.getElementById(mapid), { // 地图的中心地理坐标。 //center: new qq.maps.LatLng(39.916527,116.397128) center: center, zoom: 11, mapTypeId: qq.maps.MapTypeId.ROADMAP }); var marker = new qq.maps.Marker({ position: center, map: map }); } </script> </body> </html>
(5)显示视频
<embed src="helloworld.swf" />
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div class="col-md-12"> <embed wmode="window" flashvars="vid=i0168ba20wb&tpid=3&showend=1&showcfg=1&searchbar=1&shownext=1&list=2&autoplay=0&ptag=b1_qzone_qq_com&outhost=http%3A%2F%2Fv.qq.com%2Fpage%2Fi%2Fw%2Fb%2Fi0168ba20wb.html&refer=http%3A%2F%2Fb1.qzone.qq.com%2Fcgi-bin%2Fblognew%2Fblog_output_data%3Fuin%3D49000448%26blogid%3D1444445179%26styledm%3Dcn.qzonestyle.gtimg.cn%26imgdm%3Dcn.qzs.qq.com%26bdm%3Db.qzone.qq.com%26mode%3D2%26numperpage%3D15%26timestamp%3D1444551572%26dprefix%3D%26blogseed%3D0.7556739561259747%26inCharset%3Dgb2312%26outCharset%3Dgb2312%26ref%3Dqzone%26entertime%3D1444551573978&openbc=0&title=%20%E8%80%81%E7%94%B7%E5%AD%A9%E6%95%99%E8%82%B2%E7%94%B5%E8%A7%86%E5%8F%B0%E4%B8%93%E8%AE%BF%E8%A7%86%E9%A2%91" src="http://imgcache.qq.com/tencentvideo_v1/player/TencentPlayer.swf?max_age=86400&v=20140714" quality="high" name="tenvideo_flash_player_1444551608342" id="tenvideo_flash_player_1444551608342" bgcolor="#000000" width="100%" height="500px" align="middle" allowscriptaccess="always" allowfullscreen="true" type="application/x-shockwave-flash" pluginspage="http://get.adobe.com/cn/flashplayer/"> </div> </body> </html>
(6)图片延迟加载
$(function(){ $('img.lazy').lazyload({ //container: $('.product-list'), // 对指定标签对象内的图片实现效果,表示在此标签中滚动时,触发加载(注意:如果容器未设置height和overfload:auto,那么会默认加载所有图片) threshold: 100, //当图片顶部距离显示区域还有100像素时,就开始加载 placeholder : "img/grey.gif", // 图片未加载时,占位 effect: "slideDown", // 图片出现的效果,值有show(直接显示),fadeIn(淡入),slideDown(下拉) effect_speed: 1000, // 效果出现的时间 event: 'scroll', // 滚动滚轮时触发,可以是:click、mouseover等 data_attribute: 'original', // img标签中保存url的自定义属性,默认:data-original skip_invisible: true, // 是否跳过已经隐藏的图片(display:none) failure_limit: 2, // 由于延迟加载是根据Dom从上到下执行 // 如果遇到Dom位置在上,但是图片定位在下导致看不到,那么会以为之后的图片不在应用延迟加载 // 此处的failure_limit用于限制如果出现N个【Dom位置在上,但是图片定位在下】才终止 appear: function(){ // 当图片位置刚出现在视图时,触发此事件 $(this).attr('src'); }, load: function(){ // 当图片路径加载之后,触发此事件 $(this).attr('src'); } }); }) </script>

浙公网安备 33010602011771号