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.
text/user/views.py

63 lines
2.3 KiB

from django.shortcuts import render, redirect
from index.models import *
from user.models import *
from .form import MyUserCreationForm
from django.db.models import Q
from django.contrib.auth import login, logout
from django.contrib.auth.hashers import check_password
from django.contrib.auth.decorators import login_required
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
# 用户注册与登录
def loginView(request):
user = MyUserCreationForm()
# 表单提交
if request.method == 'POST':
# 判断表单提交是用户登录还是用户注册
# 用户登录
if request.POST.get('loginUser', ''):
loginUser = request.POST.get('loginUser', '')
password = request.POST.get('password', '')
if MyUser.objects.filter(Q(mobile=loginUser) | Q(username=loginUser)):
user = MyUser.objects.filter(Q(mobile=loginUser) | Q(username=loginUser)).first()
if check_password(password, user.password):
login(request, user)
return redirect('/user/home/1.html')
else:
tips = '密码错误'
else:
tips = '用户不存在'
# 用户注册
else:
user = MyUserCreationForm(request.POST)
if user.is_valid():
user.save()
tips = '注册成功'
else:
if user.errors.get('username',''):
tips = user.errors.get('username','注册失败')
else:
tips = user.errors.get('mobile', '注册失败')
return render(request, 'login.html', locals())
# 用户中心
# 设置用户登录限制
@login_required(login_url='/user/login.html')
def homeView(request, page):
# 热搜歌曲
search_song = Dynamic.objects.select_related('song').order_by('-dynamic_search').all()[:4]
# 分页功能
song_info = request.session.get('play_list', [])
paginator = Paginator(song_info, 3)
try:
contacts = paginator.page(page)
except PageNotAnInteger:
contacts = paginator.page(1)
except EmptyPage:
contacts = paginator.page(paginator.num_pages)
return render(request, 'home.html', locals())
# 退出登录
def logoutView(request):
logout(request)
return redirect('/')