You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

112 lines
3.7 KiB
Python

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import logging
from django.db.models import Count
from django.shortcuts import render
from django.views.decorators.http import require_http_methods
# Create your views here.
from rest_framework import viewsets
from rest_framework.response import Response
from app.models import TP
from app.serializers import SerialMyModel, SerialFilter
from app.pagination import MyPageNumberPagination
from user.models import UserProfile
from django.contrib.auth import authenticate, login, logout
from .utils import generate_token, decode_token_exp_time
from rest_framework.views import APIView
logger = logging.getLogger('mylogger')
class TPAPIView(APIView):
def get(self, request, *args, **kwargs):
query_params = request.query_params
pass
class ModelQuery(viewsets.ModelViewSet):
# 查询类
queryset = TP.objects.all().order_by("-uid") # 按照uid倒序
# 序列化类
serializer_class = SerialMyModel
# 分页类
pagination_class = MyPageNumberPagination
# 条件筛选
filterset_class = SerialFilter
def query_event(self, request, *args, **kwargs):
res = TP.objects.filter(event_type__isnull=False).values('event_type').annotate(count=Count('event_type')).order_by('-count')
result = list(res)
data = dict()
for index, item in enumerate(result, 1):
data[index] = item.get('event_type')
response = {
'success': True,
'msg': '查询成功',
'data': data
}
return Response(response)
# 用APIVIEW或者视图函数改到user模块下
class RegisterLoginViewSet(viewsets.ModelViewSet):
def tp_register(self, request, *args, **kwargs):
"""注册 POST"""
# 判断用户是否为管理员
# user = request.user
# if not user.is_superuser:
# return Response({'msg': '您不是管理员,无权限添加成员'})
data = request.data
username = data.get('username')
password = data.get('password')
try:
if UserProfile.objects.filter(username=username).first():
return Response({'msg': '该用户名已存在,请换一个'})
UserProfile.objects.create_user(username=username, password=password)
return Response({'msg': '注册成功'})
except Exception as e:
logger.info(e)
response = {
"msg": f'注册失败, 原因:{e}'
}
return Response(response)
class LoginView(viewsets.ModelViewSet):
def tp_login(self, request, *args, **kwargs):
"""登录 POST"""
data = request.data
username = data.get('username')
password = data.get('password')
login_user = authenticate(username=username, password=password)
if login_user and login_user.is_active:
# 生成token
token = generate_token(login_user)
response = {
'success': True,
'msg': '登录成功',
'data': {
'username': login_user.username,
'roles': ['admin'] if login_user.is_superuser else ['common'],
'accessToken': token,
'expires': decode_token_exp_time(token)
}
}
return Response(response)
else:
response = {
'success': False,
'msg': '登录失败',
'data': {
'username': None,
'roles': [],
'accessToken': None,
'expires': None
}
}
return Response(response)
def tp_logout(self, request, *args, **kwargs):
"""登出 GET"""
pass