django -- 登录验证

django -- 登录验证

环境说明

Django:1.10

Python:3.6

以 AbstractUser 方式扩展内置 User

# models.py 定义 model

from django.db import models
from django.contrib.auth.models import AbstractUser
# Create your models here.

class UserProfile(AbstractUser):
    # 昵称
    nick_name = models.CharField(max_length = 50, verbose_name = u"昵称", default="")

Note:内置 User 已经有了 username 和 password,要验证就是这两个

# admin.py 注册 model

from django.contrib import admin
from logre.models import UserProfile

admin.site.register(UserProfile)

authenticate 进行用户验证

Note: 值得注意的是,authenticate 只是一个验证而已,需要另外使用 login() 进行登录,加入 session 中保持登录状态,怎样获得这个 session 信息的话,有待学习

from django.shortcuts import render
from django.contrib import auth

def login(request):
	if request.method == ‘POST‘:
		input_number = request.POST[‘input_username‘]
		input_pwd    = request.POST[‘input_pwd‘]

		# 匹配成功的话返回用户对象
		user = auth.authenticate(username=input_number,password=input_pwd)

		if user is not None and :
			# 更新登陆时间
			now_time        = time.strftime(‘%Y-%m-%d %H:%M:%S‘,time.localtime(time.time()))
			user.last_login = now_time
			user.save()

			auth.login(request,user)

			return render(request,‘index.html‘)

	return render(request,‘login.html‘)

上面判断中出现的 user.is_active,用来判断用户名密码是否有效

当然,另外的 html 页面和 url 配置这里就不多说明了

注销

既然说到登录,注销就在这里一并记录了

就像 login() 一样,auth 中也有 logout() 函数可以供我们使用

# views.py

from django.contrib import auth

def logout_view(request):
	auth.logout(request)
	return HttpResponseRedirect("/login/")

一样得配置相应的 url

常见问题

  1. 有时候,虽然数据库当中有 username 和 password 的存在,但是 authenticate 就是匹配不上,返回 None 值,可以尝试以下方法解决

使用django自带的auth.user类,我们在modles下自建的user下的账号,有时候authenticate()会读取不到;

在账号注册的时候,插入函数要弄对,要用objects.create_user()函数,你用objects.create插入的时明文的,authenticate()当然会读取不到

  1. 如果我们直接导入 auth 的 login 时,使用的使用为 login(request,user),当你的函数名恰好为 login(request) 就会出错,修改过来就好
login() takes 1 positional argument but 2 were given
时间: 2024-07-30 22:21:04

django -- 登录验证的相关文章

Django登录验证——原生表单验证

直接上代码, In views.py 1 from django.shortcuts import render,redirect 2 from django.contrib.auth import authenticate 3 from django.http import HttpResponse 4 5 def login(request): 6 context={} 7 if request.method=='GET': 8 return render(request,'login.ht

Django user authenticate 登录验证

Django视图函数 view视图函数 from django.shortcuts import render,redirect from django.contrib.auth import authenticate,login,logout def acc_login(request): “登录验证”’ error_msg = '' if request.method == "POST": username = request.POST.get('username') passwo

Django通过中间件实现登录验证demo

前提:中间件版的登录验证需要依靠session,所以数据库中要有django_session表. 1 from django.conf.urls import url 2 from django.contrib import admin 3 from app01 import views 4 5 urlpatterns = [ 6 url(r'^admin/', admin.site.urls), 7 url(r'^login/$', views.login, name='login'), 8

Django+中间件+登录验证

Django的request请求需要首先经过中间件处理,再通过URL查找到对应的views函数进行处理.在settings的MIDDLEWARE_CLASSES中 添加设置中间件进行激活,大致原理如下图所示: 在使用Django框架进行开发的过程中,遇到一个问题:要求对觉得多数页面请求request进行用户登录验证,如果用户没有登录则跳转回到登录页面: 如果用户登录了,则直接跳转到新的链接页面? 在django中提供了一种自定义装饰器@login_required来实现验证用户登录: 1 # c

巨蟒django之CRM1 需求分析&&表结构设计&&注册登录验证

1.需求分析 1.项目 (1)业务 (2)权限的管理 2.CRM customer relationship management 客户关系管理系统 3.谁来使用CRM? 销售&&班主任&&讲师&&助教 4.项目的需求分析 (1)注册 (2)登录 (3)销售 1.客户信息管理 增加 编辑 展示 客户信息(删除一般不用它做,后台管理员来做,为了信息安全) 2.跟进信息管理 增加 编辑 展示 跟进信息 3.报名信息的管理 增加 编辑 展示 报名信息 4.缴费记录

Django 登录页面的实现

一.目的 Django有自带的登录页面,但是的颜色和页面的样式不是特别的喜欢.因此,利用ace的登录页面(图1)来模仿做一个自己的登录页面(图2).根据实际的应用需要,去掉了Remember Me.Or Login Using.以及register和forgot password等功能.确切的来说,就是该页面只有“登录/验证”功能.     二.所用方法 和所有的Django方法一样,创建好models后,建立登录所需的数据库. 将修改好的模版文件放在app目录下的templates文件夹中,将

登录验证随机验证码的实现

今天我们来学习登录验证中,如何生成随机验证码?验证码使用基本都是找现成的组件来实现,用代码实现这个简单功能主要是了解了解验证码内部的实现. 友情链接 生成随机验证码基本流程:http://www.cnblogs.com/yuanchenqi/articles/7468816.html 一.效果图展示 二.代码实现 1.首先用bootstrap布一个上图简单的页面 <div class="container"> <div class="row">

Django 登录检查-自动重定向到登录页

编写一个Mixin类 from django.contrib.auth.decorators import login_required from django.utils.decorators import method_decorator class LoginRequiredMixin(object): """ 登录验证:如果未登录,自动重定向到登录页面 """ @method_decorator(login_required(login_

简单的django登录优化&amp;ORM

上一篇写了一个静态的登录验证. 实景情况网页的登录验证都是动态验证的,过程其实是从后端拿到储存的账户与密码来和前端的输入信息进行匹配校验的. 一.把项目拆分,来一个单独登录的包,放在Django项目下 输入 ==> python manage.py startapp app01 此时重新打开下项目 多出来一个app01的文件夹 二.此时刚创建的app01Django并不知道,需要手动修改配置文件来告诉Django 三.登录过程从主项目切换到app01包中的过程 四.了解一下行的调用数据库的方法