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

121 lines
4.0 KiB

from django.shortcuts import render
from django.contrib.auth import authenticate, login
from django.http.response import JsonResponse
from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage
from .forms import UserRegForm
from apps.user.models import MyUser
# Create your views here.
def user_reg(request):
if request.method == 'GET':
form_obj = UserRegForm()
print('GET')
print(form_obj)
return render(request, 'user/user_reg.html', {'form_obj': form_obj})
if request.method == 'POST':
form_obj = UserRegForm(request.POST, request.FILES)
print('POST')
print(form_obj)
if form_obj.is_valid():
uname = request.POST.get('username')
users = MyUser.objects.filter(username=uname)
if users:
for user in users:
user_img = user.user_img
info = '用户已经存在'
else:
# 接受页面传参后拼接必传字段
form_obj.cleaned_data.pop('re_password')
form_obj.cleaned_data['is_staff'] = 1
form_obj.cleaned_data['is_superuser'] = 0 # 非管理员
# 插入数据库
user = MyUser.objects.create_user(**form_obj.cleaned_data)
user_img = user.user_img
info = '注册成功,请登录'
return render(request, 'user/user_reg.html', {'form_obj', form_obj})
else:
errors = form_obj.errors
print(errors)
return render(request, 'user/user_reg.html', {'form_obj': form_obj, 'errors': errors})
def user_login(request):
return render(request, 'user/user_login.html')
def ajax_login_data(request):
print('ajax_login_data')
uname = request.POST.get('username')
pwd = request.POST.get('password')
json_dict = {}
if uname and pwd: # 不为空时触发登录逻辑
if MyUser.objects.filter(username=uname): # 查找数据库中是否存在该用户
user = authenticate(username=uname, password=pwd) # 验证用户
if user: # 验证通过
if user.is_active: # 验证用户是否为激活用户
login(request, user) # 完成登录操作
json_dict['code'] = '1000'
json_dict['msg'] = '登录成功'
else:
json_dict['code'] = '1002'
json_dict['msg'] = '密码错误'
else:
json_dict['code'] = '1003'
json_dict['msg'] = '用户不存在'
else:
json_dict['code'] = '1004'
json_dict['msg'] = '用户名密码为空'
return JsonResponse(json_dict)
def index(request):
if request.method == "GET":
level = request.GET.get("level")
truename = request.GET.get("truename", "")
status = request.GET.get("status")
search_dict = dict()
if level:
search_dict["level"] = level
if truename:
search_dict["truename"] = truename
if status:
search_dict["status"] = status
datas = MyUser.objects.filter(**search_dict).order_by("-id")
page_size = 5 # 每页显示的行数
try:
if not request.GET.get("page"):
current_page = 1
current_page = int(request.GET.get("page"))
except:
current_page = 1
paginator = Paginator(datas, page_size)
try:
users = paginator.page(current_page)
except PageNotAnInteger:
users = paginator.page(1)
except EmptyPage:
users = paginator.page(1)
context = {
'level': level,
'truename': truename,
'status': status,
'users': users
}
print(context)
return render(request, 'user/index.html', context=context)
def delete(request, _id):
obj = MyUser.objects.filter(id=_id)
obj.delete()
json_dict = dict(code=200, msg='删除数据成功')
return JsonResponse(json_dict)