导入:from django.views import View

一、查问所有数据

  • 查问数据在自定义的视图类中定义get办法
  • 应用django.http模块中的JsonResponse对非json格局的数据做返回解决
  • 在JsonResponse必须增加safe=False参数,否则会报错:In order to allow non-dict objects to be serialized set the safe parameter to False.
from django.http import HttpResponse from django import http  # Create your views here. class UserView(View):      ''' 用户视图 '''       def get(self, request):         # 模型类实例化对象         users = UserProfile.objects.all()         user_list = []         for user in users:             user_dict = {                 'id': user.id,                 'username': user.username,                 'password': user.password,                 'open_id': user.open_id,                 'code': user.code             }         user_list.append(user_dict)     return http.JsonResponse(user_list) 

二、创立数据

  • 应用django中的json,把前端传递过去的json数据转成字典
  • 应用django.db.models模块中的Q来查问多个字段在数据库中是否存在
from django.views import View from django.http import HttpResponse from django import http from django.db.models import Q import json  class UserView(View):      ''' 用户视图 '''     def post(self, request):         # 获取数据, json转字典         dict_data = json.loads(request.body.decode())         print(dict_data)         nick_name = dict_data.get('nickName')         code = dict_data.get('code')         open_id = "xljsafwjeilnvaiwogjirgnlg"         # 校验数据         result = UserProfile.objects.filter(Q(code=code) | Q(open_id=open_id))         if not result.exists():             # 数据入库             user = UserProfile.objects.create( username=nick_name, open_id=open_id, code=code )             # 返回响应             user_dict = {                 'id': user.id,                 'username': user.username,                 'password': user.password,                 'open_id': user.open_id,                 'code': user.code             }             return http.JsonResponse(user_dict)         return http.JsonResponse("用户已存在", safe=False, status=202)

三、查问某一条数据(单个)

  • 前端须要传递pk/id值,通过pk/id查问数据,查问一条数据必须用get,不能用filter,否则会报错:AttributeError: 'QuerySet' object has no attribute 'id'
  • 数据转换
  • 返回响应
class UserProfileDetail(View):      ''' 详情视图 '''       def get(self, request):         userInfo = UserProfile.objects.get(id=id)         if not userInfo:             return HttpResponse("查问的用Info户不存在", status=404)                         user_dict = {             'id': userInfo.id,             'username': userInfo.username,             'password': userInfo.password,             'open_id': userInfo.open_id,             'code': userInfo.code         }         return http.JsonResponse(user_dict, status=200) 

四、更新一条数据

  • 前端须要传递pk/id值,通过pk/id查问数据,查问一条数据必须用get,不能用filter,否则会报错:AttributeError: 'QuerySet' object has no attribute 'id'
  • 更新一条数据时必须应用filter来查问数据集,再应用update(**data)来更新数据,不能应用get,否则会报错:AttributeError: '模型类' object has no attribute 'update'
get查问获取到的是数据对象,而filter查问获取到的是数据集
class UserProfileDetail(View):      ''' 详情视图 '''       def put(self, request, id):         data_dict = json.loads(request.body.decode())         userInfo = UserProfile.objects.get(id=id)         if not userInfo:             return HttpResponse("查问的用Info户不存在", status=404)                         UserProfile.objects.filter(id=id).update(**data_dict)         userInfo = UserProfile.objects.get(id=id)         user_dict = {             'id': userInfo.id,             'username': userInfo.username,             'password': userInfo.password,             'open_id': userInfo.open_id,             'code': userInfo.code         }         return http.JsonResponse(user_dict, status=200)

五、删除某一条数据

class UserProfileDetail(View):      ''' 详情视图 '''       def delete(self, request, id):         userInfo = UserProfile.objects.filter(id=id)         if not userInfo:             return HttpResponse("删除的数据不存在", status=404)                             UserProfile.objects.filter(id=id).delete()         return HttpResponse("数据删除胜利", status=204)
上述的操作只能实用于数据表中字段很少的状况,如果字段较多,写起来会很麻烦,不利于开发