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. AtCoder Grand Contest 016 C - +/- Rectangle

    题目传送门:https://agc016.contest.atcoder.jp/tasks/agc016_c 题目大意: 给定整数\(H,W,h,w\),你需要判断是否存在满足如下条件的矩阵,如果存在 ...

  2. Educational Codeforces Round 46 (Rated for Div. 2) E. We Need More Bosses

    Bryce1010模板 http://codeforces.com/contest/1000/problem/E 题意: 给一个无向图,求图的最长直径. 思路:对无向图缩点以后,求图的最长直径 #in ...

  3. Myisamchk使用

    Myisam损坏的情况: . 服务器突然断电导致数据文件损坏;强制关机,没有先关闭mysql 服务;mysqld 进程在写表时被杀掉.因为此时mysql可能正在刷新索引. . 磁盘损坏. . 服务器死 ...

  4. Linux离线安装pip和numpy

    首先说明一下pip在线安装程序会发生什么 例如: 运行pip install numpy 1.pip会先下载与自己机器匹配的wheel安装包 我的是numpy-1.12.1-cp27-cp27mu-m ...

  5. UVALive - 6428(扩展欧几里德)

    http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=48388 前段时间偶然碰到的一道题,今天突然想到没把它记录下来. 比较不错的扩 ...

  6. c#很好用的定时器Quartz--含附件

    1.引用附件中的两个DLL 2.创建类 public class QuartzJob:IStatefulJob { private static ISchedulerFactory factory = ...

  7. nodejs+multer+ajax文件上传

    前端 html代码 + ajax代码 form表单(无需指定action) <form enctype="multipart/form-data" method=" ...

  8. 浅议block实现原理,block为什么使用copy关键字?

    1.block是一个特殊的oc对象,建立在栈上,而不是堆上,这么做一个是为性能考虑,还有就是方便访问局部变量. 2.默认Block使用到的局部变量会被copy,而不是retain.所以,他无法改变局部 ...

  9. Android利用已有控件实现自定义控件

    Android控件的基本介绍及使用自定义控件的意义         Android 本身提供了很多控件,自定义控件在android中被广泛运用,自定义控件给了我们很大的方便.比如说,一个视图为imag ...

  10. KendoUI Grid Pager部分 Nan-Nan of x Items

    相关问题: http://stackoverflow.com/questions/23941065/pager-error-in-kendo-gridnan-nan-of-1-items http:/ ...