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. 浅谈单调栈 By cellur925

    这位dalao的单调栈文章很棒!我写的是他的题单233. http://www.cnblogs.com/COLIN-LIGHTNING/p/8474668.html 一.单调栈的一般写法 ;i< ...

  2. 组件的 state 和 setState

    state 我们前面提到过,一个组件的显示形态是可以由它数据状态和配置参数决定的.一个组件可以拥有自己的状态,就像一个点赞按钮,可以有“已点赞”和“未点赞”状态,并且可以在这两种状态之间进行切换.Re ...

  3. Python 版本对比

    python2 与 python3可认为代码不通用,你也可以点击Python2.x与3​​.x版本区别来查看两者的不同 python3.6以上支持f-string,一种很方便的变量替换方式 高版本可能 ...

  4. VCS filelist 文件格式

    VCS在运行仿真一般都会加仿真参数 –f filelist,filelist 是包含其他的仿真参数和整个工程的文件列表.具体格式如下: //file list format, just for exa ...

  5. iPhone4 offical AD

    iPhone4 is so much more than just a new products.I mean this would have a lot of impact on the way i ...

  6. laravel之伪造跨站请求保护CSRF实现机制

    Laravel 提供了简单的方法使你的应用免受 跨站请求伪造 (CSRF) 的袭击.跨站请求伪造是一种恶意的攻击,它凭借已通过身份验证的用户身份来运行未经过授权的命令. Laravel 为每个活跃用户 ...

  7. chrome调试之Workspaces

    可通过workspaces来编辑本地文件 workspaces是Chrome DevTools的一个强大功能,这使DevTools变成了一个真正的IDE.Workspaces会将Sources选项卡中 ...

  8. spring 常见的注解

    spring中的注解都必须在配置文件中进行如下的配置: <context:component-scan base-package="com.shanjin.oxm.service.im ...

  9. Hyperledger(超级账本)的worldstate和SAP CRM的CRMD_CUMULAT_H

    Hyperledger fabric是基于区块链技术的一个开源项目,由Linux基金会于2015年发起,目的是推进区块链数字技术和交易验证的发展和落地. Hyperledger由多个区块构成了一个有序 ...

  10. 用python+pygame写贪吃蛇小游戏

    因为python语法简单好上手,前两天在想能不能用python写个小游戏出来,就上网搜了一下发现了pygame这个写2D游戏的库.了解了两天再参考了一些资料就开始写贪吃蛇这个小游戏. 毕竟最开始的练手 ...