Django路由访问及查询数据

[复制链接]
发表于 2026-1-21 16:29:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
1、在应用模块下,创建urls文件,用来存放访问路由



2、在项目总访问url内里注册路由


3、在view文件里,界说方法参数
  1. from django.core import serializers
  2. from django.db import connection
  3. from django.http import HttpResponse, JsonResponse
  4. # 分页
  5. from django.core.paginator import Paginator, EmptyPage
  6. import json
  7. from django.core.serializers.json import DjangoJSONEncoder
  8. from django.db.models import Q, F
  9. from .models import Tests
  10. def tests_list(request):
  11.     page_number = int(request.GET.get('page', 1))
  12.     search_term = request.GET.get('q', '')
  13.     # 定义每页显示的条目数
  14.     items_per_page = 10
  15.     # 构建模糊查询的Q对象
  16.     query = Q()
  17.     if search_term:
  18.         query &= (Q(name__icontains=search_term) | Q(password__icontains=search_term))
  19.     # 添加状态等于1的条件
  20.     #query &= Q(status=1)
  21.     # 计算出从哪一条数据开始查询
  22.     offset = (page_number - 1) * items_per_page
  23.     # 应用模糊查询获取过滤后的数据
  24.     filtered_users = Tests.objects.filter(query).order_by('-id')[offset:offset + items_per_page]
  25.     # 获取过滤后的总条目数
  26.     total_items = Tests.objects.filter(query).count()
  27.     # 计算总页数
  28.     total_pages = (total_items + items_per_page - 1) // items_per_page
  29.     # 执行查询,只获取当前页的数据
  30.     page_obj = filtered_users
  31.     json_data = [user.to_dict() for user in page_obj]
  32.     # print(user_data)
  33.     # user_data = User.objects.all()
  34.     # json_data = [ user.to_dict() for user in user_data]
  35.     # 带上条件过滤数据
  36.     # user_data = User.objects.filter(name='222333')
  37.     # print(user_data)
  38.     # list_of_dicts = list(user_data.values())
  39.     # json_data = json.dumps(list_of_dicts, cls=DjangoJSONEncoder)
  40.     return JsonResponse({'data': json_data, 'total': total_items, 'total_pages': total_pages}, safe=False)
  41. def tests_add(request):
  42.     pass
  43. def tests_edit(request):
  44.     pass
  45. def tests_delete(request):
  46.     pass
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表