|
|
from django.contrib.auth.hashers import check_password
|
|
|
from django.shortcuts import render, redirect, reverse
|
|
|
from django.contrib.auth import login, logout, authenticate
|
|
|
from django.http import HttpResponse
|
|
|
from django.urls import reverse_lazy
|
|
|
from django.views.generic import UpdateView
|
|
|
|
|
|
from .forms import *
|
|
|
from .models import *
|
|
|
|
|
|
|
|
|
# Create your views here.
|
|
|
|
|
|
|
|
|
def user_register(request):
|
|
|
if request.method == "GET":
|
|
|
return render(request, "user/register.html")
|
|
|
if request.method == "POST":
|
|
|
password = request.POST["password"]
|
|
|
password_again = request.POST["password_again"]
|
|
|
if password != password_again:
|
|
|
return render(request, "user/register.html", {"password_error": "两次输入的密码不一致"})
|
|
|
|
|
|
form = UserRegisterModelForm(request.POST)
|
|
|
if form.is_valid():
|
|
|
form.save()
|
|
|
return redirect(reverse("user:user_login"))
|
|
|
else:
|
|
|
error = form.errors
|
|
|
return render(request, "user/register.html", locals())
|
|
|
|
|
|
|
|
|
def user_login(request):
|
|
|
if request.method == "GET":
|
|
|
return render(request, "user/login.html")
|
|
|
if request.method == "POST":
|
|
|
form = LoginForm(request.POST)
|
|
|
if form.is_valid():
|
|
|
userid = form.cleaned_data.get("userid")
|
|
|
password = form.cleaned_data.get("password")
|
|
|
user = authenticate(request, userid=userid, password=password)
|
|
|
if user:
|
|
|
login(request, user)
|
|
|
# 这里不能使用render,要redirect
|
|
|
return redirect("article:index")
|
|
|
else:
|
|
|
return render(request, "user/login.html", {"error": "用户名或密码错误"})
|
|
|
else:
|
|
|
error = form.errors
|
|
|
return render(request, "user/login.html", locals())
|
|
|
|
|
|
|
|
|
def user_logout(request):
|
|
|
logout(request)
|
|
|
return redirect(reverse("user:user_login"))
|
|
|
|
|
|
|
|
|
def user_password(request):
|
|
|
if request.user.is_authenticated:
|
|
|
if request.method == "GET":
|
|
|
form = PasswordForm()
|
|
|
return render(request, "user/user_password.html", locals())
|
|
|
elif request.method == "POST":
|
|
|
user = request.user
|
|
|
form = PasswordForm(request.POST)
|
|
|
if form.is_valid():
|
|
|
origin_password = form.cleaned_data.get("origin_password")
|
|
|
new_password = form.cleaned_data.get("new_password")
|
|
|
is_true_password = check_password(origin_password, user.password)
|
|
|
if not is_true_password:
|
|
|
return render(request, "user/user_password.html", {"password_error": "原密码不正确!", "form": form})
|
|
|
user.set_password(new_password)
|
|
|
user.save()
|
|
|
return redirect("user:user_login")
|
|
|
else:
|
|
|
errors = form.errors
|
|
|
return render(request, "user/user_password.html", locals())
|
|
|
else:
|
|
|
return redirect("user:login")
|
|
|
|
|
|
|
|
|
def user_profile_view(request):
|
|
|
user = request.user
|
|
|
try:
|
|
|
print("hello")
|
|
|
profile = user.profile_user
|
|
|
print(profile)
|
|
|
return render(request, "user/profile.html", locals())
|
|
|
except Exception:
|
|
|
profile = None
|
|
|
return render(request, "user/profile.html", locals())
|
|
|
|
|
|
|
|
|
def user_profile_create(request):
|
|
|
if request.method == "GET":
|
|
|
form = ProfileModelForm()
|
|
|
return render(request, "user/profile_create.html", locals())
|
|
|
elif request.method == "POST":
|
|
|
form = ProfileModelForm(request.POST, request.FILES)
|
|
|
if form.is_valid():
|
|
|
profile = form.save(commit=False)
|
|
|
profile.user = request.user
|
|
|
profile.save()
|
|
|
return redirect("user:user_profile_view")
|
|
|
else:
|
|
|
errors = form.errors
|
|
|
return render(request, "user/profile_create.html", locals())
|
|
|
|
|
|
|
|
|
class UserProfileUpdate(UpdateView):
|
|
|
template_name = "user/profile_update.html"
|
|
|
form_class = ProfileModelForm
|
|
|
success_url = reverse_lazy("user:user_profile_view")
|
|
|
queryset = UserProfile.objects.all()
|