项目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>
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
models
from django.contrib import admin

# Register your models here.
from app01 import models
admin.site.register(models.BxSlider)
admin
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})
views

 (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>
student1__ajax
{% 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')
views

 (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})
View
#!/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>
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),
]
urls
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
moduls

 (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>
View Code

(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&amp;tpid=3&amp;showend=1&amp;showcfg=1&amp;searchbar=1&amp;shownext=1&amp;list=2&amp;autoplay=0&amp;ptag=b1_qzone_qq_com&amp;outhost=http%3A%2F%2Fv.qq.com%2Fpage%2Fi%2Fw%2Fb%2Fi0168ba20wb.html&amp;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&amp;openbc=0&amp;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&amp;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>
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>
图片延迟加载

 

   

 

posted @ 2016-09-02 10:47  若时光搁浅  阅读(99)  评论(0)    收藏  举报