인증django 사용자 인증auth모듈의 흔한 방법 사용.

24730 단어 django
추가 0
 
django로 일부 낡은 시스템을 개조할 때 원래의 사용자 디자인은django의auth모듈의 사용자 테이블에 따라 그렇게 설계할 수 없다. 물론 당신은 그렇게 억지로 확장할 수 있지만 다른 시스템에 영향을 주지 않을 것을 보장해야 하기 때문에 많은 상황에서 원래의 테이블 구조가 변하지 않고 사용자가 직접 작성하고 권한 관리라는 부분을 유지해야 한다.이전에session을 스스로 정의하는 방식을 쓴 적이 있습니다:django는 session을 사용자 정의하고 장식 모드를 사용하여django 자체의 @loginrequired 유사 기능.만약 새로 개발한 응용 프로그램이라면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()})

여기서 바로 @loginrequired로 장식하지만, 이러한 상황의 전제는 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': '[email protected]',
}),
(r'^reset_confirm/(?P[0-9A-Za-z]{1,13})-(?P[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'                        ,   '),
}}),

출처:http://www.yihaomen.com/, 원래 주소:http://www.yihaomen.com/article/python/480.htm, 원작자 공유에 감사 드립니다.

좋은 웹페이지 즐겨찾기