码迷,mamicode.com
首页 > 其他好文 > 详细

Django打造在线教育平台_day_4: 完成用户登录功能

时间:2017-06-24 18:27:06      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:一个   数据库   image   email   登录   short   creat   技术分享   数据   

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: 完成用户登录功能

标签:一个   数据库   image   email   登录   short   creat   技术分享   数据   

原文地址:http://www.cnblogs.com/jp-mao/p/7073813.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!