views.py 1.5 KB

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