이 글은 주로 Django의 auth 모듈(사용자 인증)에 대한 자세한 설명을 소개하고 있으니 참고하시기 바랍니다. 함께 살펴보겠습니다
auth 모듈은 로그인 인증 방법을 캡슐화한 것입니다. 이전에는 사용자가 입력한 사용자 이름과 비밀번호를 얻은 후 사용자 테이블에 쿼리하여 해당 개체가 있는지 확인해야 했습니다. 사용자 이름과 비밀번호가 일치합니다.
인증 모듈을 사용하면 사용자의 로그인 정보가 데이터베이스에 존재하는지 쉽게 확인할 수 있습니다.
또한 인증은 사용자가 로그인했는지 여부를 쉽게 확인할 수 있도록 세션을 캡슐화합니다.
auth의 메서드
인증 모듈 방법을 사용하려면 먼저 인증 모듈을 가져와야 합니다
from django.contrib import auth
django.contrib.auth는 다양한 방법을 제공하며 여기서는 주로 그 중 4가지 방법을 소개합니다:
1, authenticate()
사용자 인증, 즉 사용자 이름과 비밀번호가 올바른지 확인하는 기능 제공 , 일반적으로 두 개의 키워드 매개변수인 사용자 이름과 비밀번호가 필요합니다.
인증 정보가 유효하면 사용자 개체가 반환됩니다. authenticate()는 사용자를 인증한 인증 백엔드를 식별하기 위해 User 객체에 속성을 설정하며, 이 정보는 후속 로그인 프로세스에서 필요합니다. authenticate() 없이 데이터베이스에서 직접 가져온 User 객체에 로그인하려고 하면 오류가 보고됩니다! !
user = authenticate(username='someone',password='somepassword')
2, login(HttpRequest, user)
이 함수는 HttpRequest 개체와 인증된 User 개체를 허용합니다.
이 함수는 Django의 세션 프레임워크를 사용하여 인증된 사용자 업로드 세션 ID 및 기타 정보를 첨부합니다.
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: login(request, user) # Redirect to a success page. ... else: # Return an 'invalid login' error message. ...
3, logout(request) 사용자 로그아웃
이 함수는 HttpRequest 객체를 받아들이고 반환 값이 없습니다. 이 함수가 호출되면 현재 요청에 대한 모든 세션 정보가 지워집니다. 사용자가 로그인하지 않은 경우에도 이 기능을 사용할 때 오류가 보고되지 않습니다.
from django.contrib.auth import logout def logout_view(request): logout(request) # Redirect to a success page.
4.is_authenticated() of the user object
Requirements:
1 사용자는 로그인 후에 특정 페이지에만 접근할 수 있습니다.
2 사용자가 로그인하지 않고 페이지에 접근하면, 로그인 페이지로 바로 이동합니다
3 사용자가 리디렉션된 로그인 인터페이스에서 로그인을 완료하면 액세스가 자동으로 이전에 방문한 주소로 이동합니다
방법 1:
인증의 is_authenticated() 메서드를 직접 사용하여 확인합니다.
def my_view(request): if not request.user.is_authenticated(): return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path))
방법 2:
request.user.username을 기반으로 확인합니다. 비어 있으면 로그인되지 않은 것입니다.
def my_view(request): if not request.user.username: return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path))
방법 3:
django가 데코레이터를 설계했습니다. 이 상황에서는 login_requierd( )
from django.contrib.auth.decorators import login_required @login_required def my_view(request): ...
사용자가 로그인하지 않은 경우 Django의 기본 로그인 URL '/accounts/login/'으로 이동합니다. (이 값은 다음을 통해 설정 파일에서 수정할 수 있습니다. 로그인_URL). 그리고 현재 액세스 URL의 절대 경로를 전달합니다(로그인에 성공하면 이 경로로 리디렉션됩니다).
사용자 개체
사용자 개체 속성: 사용자 이름, 비밀번호(필수) 비밀번호는 해시 알고리즘을 사용하여 데이터베이스에 저장됩니다.
is_staff: 사용자에게 웹사이트에 대한 관리 권한이 있는지 여부
is_active: 여부. user는 로그인이 허용됩니다. ``False``로 설정하면 사용자를 삭제하지 않고 사용자 로그인을 금지할 수 있습니다
2.1, is_authenticated()
실제 User 개체인 경우 반환 값은 항상 True입니다. 사용자가 인증을 통과했는지 확인하는 데 사용됩니다.
인증을 통과했다고 해서 사용자에게 권한이 있다는 의미는 아니며, 사용자가 활성 상태인지 확인하지도 않습니다. 단지 사용자가 인증에 성공했다는 의미일 뿐입니다. 이 방법은 매우 중요합니다. 백그라운드에서 request.user.is_authenticated()를 사용하여 사용자가 로그인했는지 확인합니다. true인 경우 request.user.name을 프런트 데스크에 표시할 수 있습니다.
2.2. . create_user 보조 기능을 사용하여 사용자를 생성합니다:
from django.contrib.auth.models import User user = User.objects.create_user(username='',password='',email='')
2.3 , check_password(passwd)
user = User.objects.get(username=' ') if user.check_password(passwd): ......사용자가 비밀번호를 변경해야 하는 경우 먼저 원래 비밀번호를 입력해야 합니다. 주어진 문자열이 비밀번호 검사를 통과하면 True를 반환합니다.
user = User.objects.get(username='') user.set_password(password='') user.save
2.5, 간단한 예
등록:def sign_up(request): state = None if request.method == 'POST': password = request.POST.get('password', '') repeat_password = request.POST.get('repeat_password', '') email=request.POST.get('email', '') username = request.POST.get('username', '') if User.objects.filter(username=username): state = 'user_exist' else: new_user = User.objects.create_user(username=username, password=password,email=email) new_user.save() return redirect('/book/') content = { 'state': state, 'user': None, } return render(request, 'sign_up.html', content)비밀번호 변경:
@login_required def set_password(request): user = request.user state = None if request.method == 'POST': old_password = request.POST.get('old_password', '') new_password = request.POST.get('new_password', '') repeat_password = request.POST.get('repeat_password', '') if user.check_password(old_password): if not new_password: state = 'empty' elif new_password != repeat_password: state = 'repeat_error' else: user.set_password(new_password) user.save() return redirect("/log_in/") else: state = 'password_error' content = { 'user': user, 'state': state, } return render(request, 'set_password.html', content)Create User 테이블을 직접
위의 모든 작업은 django가 자동으로 생성한 auth_user 테이블에 대한 것이라는 점에 유의하세요. 이 테이블의 구조를 살펴보세요
이는 django가 자동으로 생성한 사용자 테이블이며, auth 모듈을 사용하려면 이 테이블을 사용(또는 상속)해야 합니다.
继承表的好处是我们可以增加一些自己需要的字段,并且同时可以使用auth模块提供的接口、方法
下面就讲一下继承auth的方法:
1、导入AbstractUser类,并且写一个自定义的类,继承AbstractUser类,如下:
from django.contrib.auth.models import AbstractUser class UserInfo(AbstractUser): """ 用户信息 """ nid = models.AutoField(primary_key=True) telephone = models.CharField(max_length=11, null=True, unique=True) ......
需要注意的是,UserInfo表里就不需要有auth_user里重复的字段了,比如说username以及password等,但是还是可以直接使用这些字段的,并且django会自动将password进行加密
2、这样写完之后,还需要在setting.py文件里配置:
AUTH_USER_MODEL = 'blog.UserInfo'
这样,django就知道从blog项目下的models去查找UserInfo这张表了
相关推荐:
위 내용은 Django의 auth 모듈(사용자 인증)에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

하루에 2 시간 동안 파이썬을 배우는 것으로 충분합니까? 목표와 학습 방법에 따라 다릅니다. 1) 명확한 학습 계획을 개발, 2) 적절한 학습 자원 및 방법을 선택하고 3) 실습 연습 및 검토 및 통합 연습 및 검토 및 통합,이 기간 동안 Python의 기본 지식과 고급 기능을 점차적으로 마스터 할 수 있습니다.

웹 개발에서 Python의 주요 응용 프로그램에는 Django 및 Flask 프레임 워크 사용, API 개발, 데이터 분석 및 시각화, 머신 러닝 및 AI 및 성능 최적화가 포함됩니다. 1. Django 및 Flask 프레임 워크 : Django는 복잡한 응용 분야의 빠른 개발에 적합하며 플라스크는 소형 또는 고도로 맞춤형 프로젝트에 적합합니다. 2. API 개발 : Flask 또는 DjangorestFramework를 사용하여 RESTFULAPI를 구축하십시오. 3. 데이터 분석 및 시각화 : Python을 사용하여 데이터를 처리하고 웹 인터페이스를 통해 표시합니다. 4. 머신 러닝 및 AI : 파이썬은 지능형 웹 애플리케이션을 구축하는 데 사용됩니다. 5. 성능 최적화 : 비동기 프로그래밍, 캐싱 및 코드를 통해 최적화

Python은 개발 효율에서 C보다 낫지 만 C는 실행 성능이 높습니다. 1. Python의 간결한 구문 및 풍부한 라이브러리는 개발 효율성을 향상시킵니다. 2.C의 컴파일 유형 특성 및 하드웨어 제어는 실행 성능을 향상시킵니다. 선택할 때는 프로젝트 요구에 따라 개발 속도 및 실행 효율성을 평가해야합니다.

Python의 실제 응용 프로그램에는 데이터 분석, 웹 개발, 인공 지능 및 자동화가 포함됩니다. 1) 데이터 분석에서 Python은 Pandas 및 Matplotlib를 사용하여 데이터를 처리하고 시각화합니다. 2) 웹 개발에서 Django 및 Flask 프레임 워크는 웹 응용 프로그램 생성을 단순화합니다. 3) 인공 지능 분야에서 Tensorflow와 Pytorch는 모델을 구축하고 훈련시키는 데 사용됩니다. 4) 자동화 측면에서 파이썬 스크립트는 파일 복사와 같은 작업에 사용할 수 있습니다.

Python은 데이터 과학, 웹 개발 및 자동화 스크립팅 필드에 널리 사용됩니다. 1) 데이터 과학에서 Python은 Numpy 및 Pandas와 같은 라이브러리를 통해 데이터 처리 및 분석을 단순화합니다. 2) 웹 개발에서 Django 및 Flask 프레임 워크를 통해 개발자는 응용 프로그램을 신속하게 구축 할 수 있습니다. 3) 자동 스크립트에서 Python의 단순성과 표준 라이브러리가 이상적입니다.

Python의 유연성은 다중 파리가 지원 및 동적 유형 시스템에 반영되며, 사용 편의성은 간단한 구문 및 풍부한 표준 라이브러리에서 나옵니다. 유연성 : 객체 지향, 기능 및 절차 프로그래밍을 지원하며 동적 유형 시스템은 개발 효율성을 향상시킵니다. 2. 사용 편의성 : 문법은 자연 언어에 가깝고 표준 라이브러리는 광범위한 기능을 다루며 개발 프로세스를 단순화합니다.

Python은 초보자부터 고급 개발자에 이르기까지 모든 요구에 적합한 단순성과 힘에 호의적입니다. 다목적 성은 다음과 같이 반영됩니다. 1) 배우고 사용하기 쉽고 간단한 구문; 2) Numpy, Pandas 등과 같은 풍부한 라이브러리 및 프레임 워크; 3) 다양한 운영 체제에서 실행할 수있는 크로스 플랫폼 지원; 4) 작업 효율성을 향상시키기위한 스크립팅 및 자동화 작업에 적합합니다.

예, 하루에 2 시간 후에 파이썬을 배우십시오. 1. 합리적인 학습 계획 개발, 2. 올바른 학습 자원을 선택하십시오. 3. 실습을 통해 학습 된 지식을 통합하십시오. 이 단계는 짧은 시간 안에 Python을 마스터하는 데 도움이 될 수 있습니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

WebStorm Mac 버전
유용한 JavaScript 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

Dreamweaver Mac版
시각적 웹 개발 도구
