首页 > 代码库 > Django打造在线教育平台_day_4: 完成用户登录功能
Django打造在线教育平台_day_4: 完成用户登录功能
1、把功能写在users/views.py文件中
from django.shortcuts import render from django.contrib.auth import authenticate, login #倒入验证输入是否合法模块和登录模块 # Create your views here. def user_login(request): if request.method == ‘POST‘: user_name = request.POST.get(‘username‘, ‘‘) pass_word = request.POST.get(‘password‘, ‘‘) # 向数据库发起验证请求用户名和密码是否正确 # 正确会返回一个对象, 不正确会返回None user = authenticate(username=user_name, password=pass_word) if user is not None: login(request, user) # 登录 return render(request, ‘index.html‘) else: return render(request, "login.html",{‘msg‘: "用户名或者密码错误"})
elif request.method == ‘GET‘: return render(request, "login.html", {})
2、修改login.html文件
登录失败提示:
3、运行程序输入用户密码,出现以下错误,是Django安全机制影响的
在login.html文件加入以下代码
重新运行程序
修改index.html达到登录成功显示个人中心
修改urls.py文件
from users.views import user_login urlpatterns = [ url(r‘^login/$‘, user_login, name=‘login‘), ]
自定义登录方式(账户邮箱都可以登录)
在users/views.py添加如下代码
from django.contrib.auth.backends import ModelBackend from django.db.models import Q from .models import UserProfile # Create your views here. class CustomBackend(ModelBackend): def authenticate(self, username=None, password=None, **kwargs): try: user = UserProfile.objects.get(Q(username=username)|Q(email=username)) if user.check_password(password): return user except Exception as e: return None
配置settings.py添加
AUTHENTICATION_BACKENDS = ( ‘users.views.CustomBackend‘, )
Django打造在线教育平台_day_4: 完成用户登录功能
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。