import json import copy from django.utils import timezone from django.shortcuts import render from user.models import User as User_models from order.models import Order as Order_models # Create your views here. from django.http import HttpResponse, JsonResponse from django.views.decorators.http import require_http_methods from django.views.decorators.csrf import csrf_exempt from django.core import serializers # 序列化 QuerySet from admin_site.utils import setError, setSuccess, userPersonToDictionary, get_timestamp,user_to_dict from sick.views import add_sick from sick.models import Sick as Sick_models from rest_framework.parsers import JSONParser import jwt import re import pytz # from rest_framework.views import APIView # from rest_framework.response import Response def index(request): return HttpResponse("Hello, user index") @csrf_exempt @require_http_methods(["POST"]) def info(request): params = json.loads(request.body) if params['token'] == None: return HttpResponse(setError("该用户不存在!")) user_info = userPersonToDictionary(User_models.objects.get(token=params['token'])) print(34, user_info) if user_info['isSick']: sick_list_dic = Sick_models.objects.filter(user_id=user_info['id']) sick_list = [] for key in sick_list_dic: sick_list.append(key.name) if len(sick_list) > 0: user_info.setdefault('sick', sick_list) return JsonResponse(setSuccess(data=user_info)) """ 用户登陆 """ @csrf_exempt @require_http_methods(["POST"]) def login(request): body = json.loads(request.body) if body.get('email') == None: return JsonResponse(setError('该用户不存在!')) if body.get('password') == None: return JsonResponse(setError('该用户的密码不存在!')) user_info = User_models.objects.get(email=body.get('email')) name = body.get("name", None) password = body.get("password", None) print(user_info.password, password, type(password)); if user_info.email != None and user_info.password != password: return JsonResponse(setError('密码输入错误!')) # , password=body.get('password') now_time = timezone.localtime() user_str = {'username': user_info.email, 'password': password, 'now_time': get_timestamp(now_time)} token = jwt.encode(user_str, 'sercet', algorithm='HS256') params = { "token": token, 'token_exit_time': now_time } User_models.objects.filter(id=user_info.id).update(**params) new_user_info = user_to_dict(user_info) params = {**new_user_info,**params} return JsonResponse(setSuccess(data=params)) @csrf_exempt @require_http_methods(["POST"]) def register(request): # body = request.POST body = json.loads(request.body) is_add = User_models.objects.all().filter(email=body.get('email')) if len(is_add) > 0: return JsonResponse(setError("当前邮箱已存在,添加失败")) params = { 'email': body.get('email'), 'password': body.get('password'), } user_add = User_models(**params) user_add.save() return JsonResponse(setSuccess(msg='注册成功', data=True)) @csrf_exempt @require_http_methods(["POST"]) def update(request): # body = request.POST.dict() body = json.loads(request.body) print(80808080, body) if body['id'] == None or body['id'] == '': return JsonResponse(setError("用户不存在")) # if(body['id']) new_body = {} body.setdefault('is_sick', body['isSick']) print(99, body['is_sick']) del body['isSick'] if body['is_sick']: add_sick(request) for field in body: match = re.search(r'\bsick\[\b', field) if match == None: new_body[field] = body[field] else: print(107, body['is_sick']) Sick_models.objects.filter(user_id=body.get('id')).delete() new_body = body del new_body['sick'] # type # field_list = ['address', 'password', 'nickname', 'mobile'] # params = {} # # 用户信息更新 # if (body.get('type') == 'Fl001'): # # 如果字段中存在未完成订单,不允许修改地址,联系方式 # if body.get('address') != None or body.get('mobile') != None: # # 查询数据库中是否存在未完成订单 # user_order = Order_models.objects.filter(user_id=body['id'], status__lte=2) # if len(user_order) > 0: # return JsonResponse(setError("存在未完成订单,无法修改!")) # for key in field_list: # if params.get(key) == None and body.get(key) != None: # params.setdefault(key, body.get(key)) # # elif body.get(key) != None and params.get(key) != None: # # setattr(params, key, body.get(key)) # # # 司机信息或者是回收站更新 # if body.get('type') == 'Fl002' or body.get('type') == 'Fl003': # for key in field_list: # # if body.get(key) != None and key != 'address': # # setattr(params, key, body.get(key)) # if params.get(key) == None and body.get(key) != None and key != 'address': # params.setdefault(key, body.get(key)) # Order_models.objects.filter(user_id=body['id'], status__lte=1) User_models.objects.filter(id=body['id']).update(**new_body) return JsonResponse(setSuccess(msg='更新成功', data=True))