from django.shortcuts import render, redirect, reverse
from datetime import datetime
# Create your views here.
from django.http import HttpResponse, JsonResponse
from django.template.loader import get_template
from teacher.models import Student, StudentDetail, Grade
from crm.settings import UPLOAD_ROOT
from django.db.models import Q
from django.core.paginator import Paginator

def index(request):

  students = Student.objects.all()
  arg = {
  '_meta': 'asdfadsfa'
}
  format_str = '%Y-%m-%d %H:%M:%S'
  return render(request, 'teacher/index.html', context={
    'students': students,
  'format_str': format_str,
  'arg': arg
})

def login(request):
  # url = reverse('teacher:detail', kwargs={'pk': 12})
  # return redirect(url) # 硬编码

  if request.method == 'POST':
    username = request.POST.get('username', '')
    password = request.POST.get('password', '')
  if username == 'qixiang' and password == '123456':
    return redirect(reverse('teacher:index'))

    return render(request, 'teacher/login.html')

def detail(request, pk):
# pk 一般是个id 是整数 primary key

  return HttpResponse('学生id为%s的详情页' % pk)

def students(request):
  section = '学生列表'
  # 获取查询参数
  search = request.GET.get('search', '').strip()

  if search:
  if search.isdigit():
  # 是qq,或者电话号码
  sts = Student.objects.filter(Q(qq=search)|Q(phone=search), is_deleted=False).order_by('-e_time')
else:
  # 说明是姓名
  sts = Student.objects.filter(name__contains=search, is_deleted=False).order_by('-e_time')
else:
  sts = Student.objects.filter(is_deleted=False).order_by('-e_time')

  # 当前页码
  page = request.GET.get('page', 1)
  page = int(page)
  # 每页显示多少数据
  per_page = request.GET.get('per_page', 10)
  per_page = int(per_page)

  paginator = Paginator(sts, per_page)  #将查询对象进行分页

  sts = paginator.get_page(page) # 当前页的数据

  return render(request, 'teacher/students.html', context={
    'students': sts,
    'section': section,
    'search': search,
    'per_page': per_page,
    'page': page,
  })

def students_api(request):
  sex = request.GET.get('sex')
  sex = int(sex)
  students = Student.objects.values('name', 'age', 'sex', 'phone').filter(sex=sex)
  students = list(students)
  res = {'data': students}
  return JsonResponse(res)

Django框架基础知识10-内置分页系统的更多相关文章

  1. Django框架基础知识01-配置环境

    Django框架 Django是个怎样的东西呢? Web应用框架----Django  http服务器:用来接受用户请求,并将请求转发给web应用框架进行处理. Web应用框架处理完以后再发送给htt ...

  2. Django框架基础知识08-表关联对象及多表查询

    1.自定义主键字段的创建 AutoFiled(pirmary_key=True) # 一般不会自定义,int类型,自增长 一般不自定义主键. 2.order_by asc desc from djan ...

  3. Django框架基础知识13-auth系统

    我们昨天登录admin时创建的用户信息是存放在哪里了呢? auth系统的数据表: 从表的名称我们就能看出, auth_user,auth_group,auth_permission分别存放了用户,用户 ...

  4. Django框架基础知识05-自定义模板标签与过滤器

    根据一定规则,自己定义出符合需求功能的.用在任何你有需求的地方,因为内置的满足不了我们的需求,不同的东西有不同的定义规则 目前最最重要的就是HOW 一 文件路径配置: templates 存放自定义 ...

  5. 1.18 Python基础知识 - Python内置函数

    官方地址:https://docs.python.org/3.5/library/functions.html abs(x): 返回数字的绝对值 all(iterable): 如果迭代器的所有元素都为 ...

  6. [python基础知识]python内置函数map/reduce/filter

    python内置函数map/reduce/filter 这三个函数用的顺手了,很cool. filter()函数:filter函数相当于过滤,调用一个bool_func(只返回bool类型数据的方法) ...

  7. Django框架基础知识12-中间件及上下文处理器

    Django中间件(Middleware) 是一个轻量级.底层的“插件”系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出. django 中的中间件(middleware) ...

  8. Django框架基础知识14-类视图

    MTV view视图 wsgi函数 def index(request): .... return HttpResponse() 特定的HTTP方法.get,post可以定义单独的方法 继承,多继承, ...

  9. Django框架基础知识11-会话状态保持及表单

    浏览器存储cookie的方式不太安全,那有没有更好些的来存储登入状态的方式呢??? 状态保持----cookie和session: 状态保持: 1.http协议是无状态的:每次请求都是一次新的请求,不 ...

随机推荐

  1. SVG新手入门

    特点 矢量图 属性:形状的参数(都没有单位) 添加事件跟html一样 修改样式跟html一样 属性操作: setAttribute/getAttribute 图形 <svg width=&quo ...

  2. $ybt\ 【信息学奥赛一本通】题解目录$

    [信息学奥赛一本通]题解目录 $ \large -> OJ$ $ problem1000 $ \(Answer\) - > $ \large 1000$ $ problem1001 $ \ ...

  3. Jquery | 基础 | 慕课网 | 类选择器

    原生getElementsByClassName()函数的实现代码与jQuery实现代码的比较: <!DOCTYPE html> <html> <head> < ...

  4. Bits Equalizer UVA - 12545

    点击打开链接 #include<cstdio> #include<cstring> /* 别看错了:0能变1,1不能变0 能完成的条件是,s与t长度相等且s中0数量和?数量之和 ...

  5. php多文件上传类(含示例)

    在网上看到一个比较好的多文件上传类,自己改良了下,顺便用js实现了多文件浏览,php文件上传原理都是相同的,多文件上传也只是进行了循环上传而已,当然你也可以使用swfupload进行多文件上传! &l ...

  6. Spring Boot 注册 Servlet 的三种方法,真是太有用了!

    本文栈长教你如何在 Spring Boot 注册 Servlet.Filter.Listener. 你所需具备的基础 什么是 Spring Boot? Spring Boot 核心配置文件详解 Spr ...

  7. laravel权限控制Gate

    实现思想 注册 位置: app/Providers/AuthServiceProvider.php $permissions = \App\AdminPermission::all(); foreac ...

  8. Javaweb学习笔记7—JDBC技术

      今天来讲javaweb的第7阶段学习. JDBC技术,关于JDBC本篇博客只介绍了它的一部分,后面博客会更加深入探讨. 老规矩,首先先用一张思维导图来展现今天的博客内容.   ps:我的思维是用的 ...

  9. 51nod 1097 拼成最小的数

    基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 设有n个正整数,将它们联接成一排,组成一个最小的多位整数.     例如: n=2时,2个整数32, ...

  10. zc.buildout构建项目时报错‘AttributeError: '_NamespacePath' object has no attribute 'sort'’

    在使用zc.buildout构建项目时如果碰到‘AttributeError: '_NamespacePath' object has no attribute 'sort'’报错: An inter ...