验证django 用户认证auth模块常见方法使用.

在用 django 改造某些旧系统的时候,由于原来的用户设计不可能按照django  的 auth 模块的用户表那样设计的,当然你可以硬扩展成那样,但必须保证不影响别的系统,所以在很多情况下还是保持原来的表结构不变,自己写用户,权限管理这一块. 以前写过一篇自己定义 session 的方式: django 自定义session , 并采用装饰模式来实现django 自身的 @login_required 类似功能。 如果是新开发的应用,如何用django 自身的 装饰方法判断是否登录:

程序代码 程序代码

rom django.shortcuts import render
from programm.models import *
from django.contrib.auth.decorators import login_required

def index(request):
        return render(request, 'index.html')

@login_required
def liste(request):
        return render(request, 'liste.html', {'lObj': myModel.objects.all()})


在这里直接用 @login_required 来装饰,但是用这种情况的前提是你必须采用 DJANGO的 autho 框架来实现用户管理.

程序代码 程序代码

from django.contrib.auth import authenticate, login

def my_view(request):
    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(username=username, password=password)
    if user is not None:
        if user.is_active:
            login(request, user)
            # Redirect to a success page.
        else:
            # Return a 'disabled account' error message
    else:
        # Return an 'invalid login' error message.


除此之外,还有一些其他的方法:
logout(request[, next_page, template_name, redirect_field_name])
password_change(request[, template_name, post_change_redirect, password_change_form])
password_change_done(request[, template_name])
password_reset(request[, is_admin_site, template_name, email_template_name, password_reset_form,token_generator, post_reset_redirect, from_email])
password_reset_done(request[, template_name])

其用法可以参考如下:

程序代码 程序代码

(r'^change_passwd/$', 'django.contrib.auth.views.password_change', {
    'template_name': 'change_passwd.html',
    'post_change_redirect': '/',
}),
(r'^reset_passwd/$', 'django.contrib.auth.views.password_reset', {
    'template_name': 'reset_passwd.html',
    'email_template_name': 'reset_passwd_email.html',
    'post_reset_redirect': '/reset_done/',
    'from_email': 'noreply@jihua.in',
}),
(r'^reset_confirm/(?P<uidb36>[0-9A-Za-z]{1,13})-(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', \
    'django.contrib.auth.views.password_reset_confirm', {
        'template_name': 'reset_confirm.html',
        'post_reset_redirect': '/signin/',
    }
),
(r'^reset_done/$', 'django.views.generic.simple.direct_to_template', {'template': 'message.html', 'extra_context': {
    'msg': _(u'我们已将一封包含恢复密码步骤的邮件发到了您的邮箱,请查收'),
}}),




除非申明,文章均为一号门原创,转载请注明本文地址,谢谢!
[本日志由 轻舞肥羊 于 2014-02-24 10:56 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: django
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.