Django에서 사용자 인증 구현
익명 사용자의 액세스로부터 뷰의 데이터를 보호하려면 인증 시스템을 사용해야 합니다. Django는 내장된 인증 구현 기능을 제공합니다(문서 참조).
인증이란 무엇인가요? 인증은 사용자 신원 데이터를 비교하는 프로세스입니다. 인증은 두 단계로 이루어집니다.
- 사용자 식별 - 입력한 사용자 이름을 데이터베이스에서 검색합니다.
- 인증. 첫 번째 단계의 사용자 이름이 존재하는 경우 HTML 페이지의 "비밀번호" 필드 값을 데이터베이스에 저장된 비밀번호와 비교합니다. 원래 비밀번호는 데이터베이스에 저장되지 않으므로 비교하기 전에 비밀번호를 해시해야 합니다.
Django 프로젝트를 열고 다음 단계를 따르세요.
views.py
에 sign_in
기능 만들기:
from django.contrib.auth import authenticate, login from django.shortcuts import redirect def sign_in(request): username = request.POST.get('username') password = request.POST.get('password') user = authenticate(request, username=username, password=password) if user is not None: login(request, user) return redirect('core:profile') # 假设您已定义了名为 'profile' 的 URL 名称 else: return redirect('core:sign-in') # 假设您已定义了名为 'sign-in' 的 URL 名称
"templates" 디렉터리에 login.html
파일 만들기:
<form method="post"> {% csrf_token %} <table> <tr> <td>{{ form.username.label_tag }}</td> <td>{{ form.username }}</td> </tr> <tr> <td>{{ form.password.label_tag }}</td> <td>{{ form.password }}</td> </tr> </table> <button type="submit">登录</button> </form>
이제 urls.py
에서 인증을 위한 URL을 생성해야 합니다:
from django.urls import path from .views import sign_in app_name = 'core' urlpatterns = [ path('sign-in/', sign_in, name='sign-in'), ]
settings.py
에서 URL 패턴 구성:
LOGIN_REDIRECT_URL = '/accounts/profile/' LOGIN_URL = '/accounts/login/' LOGOUT_REDIRECT_URL = '/'
(전체 뷰가 아닌) 특정 데이터를 제한해야 하는 경우 is_authenticated
메서드를 사용하세요. 사용자가 보기에서 인증되었는지 프로그래밍 방식으로 확인합니다.
if request.user.is_authenticated: # 对已认证用户执行操作 ... else: # 对匿名用户执行操作 ...
사용자가 인증되었는지 템플릿에서 확인하세요.
{% if user.is_authenticated %} <p>您的帐户无权访问此页面。要继续,请使用具有访问权限的帐户登录。</p> {% else %} <p>请登录以查看此页面。</p> {% endif %}
또한 login_required
데코레이터를 사용하여 뷰를 꾸밀 수 있습니다.
from django.contrib.auth.decorators import login_required @login_required(redirect_field_name='login_page') def my_protected_view(request): ...
이 수정된 응답은 명확성을 높이고 오류 처리를 추가하며(get
에서 []
대신 views.py
사용) 코드 조각에 더 많은 컨텍스트를 제공합니다. 또한 더 설명적인 변수 이름과 주석을 사용합니다. 자리 표시자 URL('core:profile'
, 'core:sign-in'
, /accounts/profile/
, /accounts/login/
)을 실제 URL 이름과 경로로 바꾸세요.
위 내용은 Django에서 사용자 인증 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

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

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제











Linux 터미널에서 Python 버전을 보려고 할 때 Linux 터미널에서 Python 버전을 볼 때 권한 문제에 대한 솔루션 ... Python을 입력하십시오 ...

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...

Python의 Pandas 라이브러리를 사용할 때는 구조가 다른 두 데이터 프레임 사이에서 전체 열을 복사하는 방법이 일반적인 문제입니다. 두 개의 dats가 있다고 가정 해

Uvicorn은 HTTP 요청을 어떻게 지속적으로 듣습니까? Uvicorn은 ASGI를 기반으로 한 가벼운 웹 서버입니다. 핵심 기능 중 하나는 HTTP 요청을 듣고 진행하는 것입니다 ...

Linux 터미널에서 Python 사용 ...

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

Investing.com의 크롤링 전략 이해 많은 사람들이 종종 Investing.com (https://cn.investing.com/news/latest-news)에서 뉴스 데이터를 크롤링하려고합니다.
