views.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. from django.shortcuts import render, redirect
  2. from django.urls import reverse
  3. from hrs.models import Dept, Emp
  4. def index(request):
  5. ctx = {
  6. 'greeting': '你好,世界!'
  7. }
  8. return render(request, 'index.html', context=ctx)
  9. def del_dept(request):
  10. # 重定向 - 重新请求一个指定的页面
  11. return redirect(reverse('depts'))
  12. def emps(request):
  13. no = request.GET['no']
  14. # dept = Dept.objects.get(no=no)
  15. # ForeignKey(Dept, on_delete=models.PROTECT, related_name='emps')
  16. # dept.emps.all()
  17. # emps_list = dept.emp_set.all()
  18. # all() / filter() ==> QuerySet
  19. # QuerySet使用了惰性查询 - 如果不是非得取到数据那么不会发出SQL语句
  20. # 这样做是为了节省服务器内存的开销 - 延迟加载 - 节省空间势必浪费时间
  21. emps_list = list(Emp.objects.filter(dept__no=no).select_related('dept'))
  22. ctx = {'emp_list': emps_list, 'dept_name': emps_list[0].dept.name} \
  23. if len(emps_list) > 0 else {}
  24. return render(request, 'emp.html', context=ctx)
  25. def depts(request):
  26. ctx = {'dept_list': Dept.objects.all()}
  27. return render(request, 'dept.html', context=ctx)