123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- from django.shortcuts import render, HttpResponse
- from django.http import HttpRequest, JsonResponse
- from django.views.decorators.http import require_POST, require_GET, require_http_methods
- from django.contrib.auth.models import User
- from django.contrib.auth import authenticate, login as auth_login, logout
- # from django.contrib.sessions import S
- # from django.contrib.auth.decorators import login_required
- import simplejson
- from messages import Messages
- from functools import wraps
- # 装饰器 验证账号
- def login_required(view_func):
- @wraps(view_func)
- def wrapper(request, *args, **kwargs):
- if request.user.is_authenticated:
- return view_func(request, *args, **kwargs)
- else:
- return HttpResponse(status=401)
- return wrapper
- # # 包装函数 装饰器
- # def request_methods(methods):
- # def method(func):
- # def wrapper(request, *args, **kwargs):
- # if request.method.lower() in methods:
- # ret = func(request, *args, **kwargs)
- # return ret
- # else:
- # return JsonResponse({}, status=405)
- # return wrapper
- # return method
- @require_POST
- def reg(request: HttpRequest):
- try:
- payload = simplejson.loads(request.body)
- username = payload['username']
- count = User.objects.filter(username=username).count()
- if count > 0:
- return JsonResponse(Messages.USER_EXISTS)
- username = username
- email = payload['email']
- password = payload['password']
- user = User.objects.create_user(username, email, password)
- return JsonResponse({}, status=201)
- except Exception as e:
- print(e)
- return JsonResponse(Messages.BAD_REQUEST, status=200)
- @require_POST
- def user_login(request: HttpRequest):
- try:
- payload = simplejson.loads(request.body)
- username = payload['username']
- password = payload['password']
- # 判断用户是否存在
- user = authenticate(username=username, password=password)
- if user is None:
- return JsonResponse(Messages.USER_NOT_EXISTS)
- auth_login(request, user)
- session = request.session
- session.set_expiry(30)
- session['userinfo'] = {
- 'id': request.user.id,
- 'username': request.user.username
- }
- response = HttpResponse(status=204)
- # response.set_cookie('username')
- return response
- except Exception as e:
- print(e)
- return JsonResponse({}, status=200)
- @login_required
- def user_login_out(request: HttpRequest):
- logout(request)
- return HttpResponse(status=302)
- class SimpleMiddleware:
- def __init__(self, get_response):
- self.get_response = get_response
- def __call__(self, request):
- response = self.get_response(request)
- return response
- def process_view(self, request, view_func, view_args, view_kwargs):
- return None
|