from django.shortcuts import render, redirect from django.contrib.auth import authenticate, login, logout from django.http import HttpResponse from .form import UserLoginForm, UserRegisterForm from django.contrib.auth.models import User from django.contrib.auth.decorators import login_required def user_login(request): if request.method == 'POST': user_login_form = UserLoginForm(request.POST) if user_login_form.is_valid(): # 清洗出合法的数据 data = user_login_form.cleaned_data # 检验账号、密码是否正确匹配数据库中的某个用户 # 如果均匹配,则返回这个user对象 user = authenticate(username=data['username'], password=data['password']) if user: login(request, user) return redirect("article:article_list") else: return HttpResponse("账号或密码输入不正确,请重新输入") else: return HttpResponse("账号或密码输入不合法") elif request.method == 'GET': user_login_form = UserLoginForm() context = {'form': user_login_form} return render(request, 'userprofile/login.html', context) else: return HttpResponse("请使用GET或POST请求数据") def user_logout(request): logout(request) return redirect("article:article_list") def user_register(request): if request.method == 'POST': user_register_form = UserRegisterForm(data=request.POST) if user_register_form.is_valid(): new_user = user_register_form.save(commit=False) new_user.set_password(user_register_form.cleaned_data['password']) new_user.save() login(request, new_user) return redirect("article:article_list") else: return HttpResponse('注册表单输入有误,请重新输入') elif request.method == 'GET': user_register_form = UserRegisterForm() context = {'form': user_register_form} return render(request, 'userprofile/register.html', context) else: return HttpResponse('请使用GET或POST请求数据') @login_required(login_url='/user/login/') def user_delete(request, id): if request.method == 'POST': user = User.objects.get(id=id) if request.user==user: logout(request) user.delete() return redirect('article:article_list') else: return HttpResponse('你没有删除该用户的权限') else: return HttpResponse('仅接受POST请求')