Django2 사용자 로그인 등록 기능 요약
데이터베이스 섹션:
모델스에 있습니다.py가 테이블을 만들 때 Django가 자동으로 많은 테이블을 만들 수 있습니다. 그 중에서 하나의 테이블 이름은 다음과 같습니다.
auth_user
이 테이블은 Django가 자체로 가지고 있는 사용자 테이블입니다. 이를 이용하여 로그인 인증을 실현할 수 있습니다. 이 테이블 필드에 어떤 것들이 있는지 먼저 보십시오.Django Auth User
username:
email:
password:
first_name:
last_name:
is_active: 。 True
is_staff: 。 False
is_superuser: 。 False
dat_joined: 。 。
모델스에서.py의 관련 작업:
from django.contrib.auth.models import User
''' , '''
class UserInfo(models.Model):
user=models.OneToOneField(User,on_delete=models.CASCADE)
# User
role=models.CharField(max_length=32) # , , ,
여기에 디버깅용 데이터는 관리자를 통해 추가할 수 있고, 그 다음에 등록 기능으로 데이터를 추가할 수 있습니다
URL 섹션
urlpatterns = [
path('admin/', admin.site.urls),
path('login',views.acc_login),
path('logout',views.acc_logout,name="logout"), # name {% url 'logout' %} url
path('crm',views.crm),
]
settings.py 섹션:
LOGIN_URL="/login" #( )
Views 섹션
from django.shortcuts import render,redirect
from django.contrib.auth import authenticate,login,logout
from django.contrib.auth.decorators import login_required
#
@login_required # , settings.py LOGIN_URL="/login" ( )
def crm(request):
return render(request,"userinfo.html")
def acc_login(request):
error_msg=' '
if request.method=="GET":
return render(request, "login.html")
if request.method=="POST":
username=request.POST.get("username")
print(username)
password=request.POST.get("password")
print(password)
user=authenticate(username=username,password=password) # ,
if user:
print(user) #username
print(type(user)) #
login(request,user) # ,
# request.user=user {{request.user}}
return redirect(request.GET.get("next",'/crm')) #http://127.0.0.1:8080/login?next=/crm
# , ,
else:
print(user) #None
print(type(user)) #
error_msg=" "
return render(request, "login.html", {"error_msg":error_msg})
def acc_logout(request):
logout(request)
return redirect('/login')
HTML 섹션
userinfo.html
<body>
<div><a href="">{{ request.user }}a>div>
<div><a href="{% url 'logout' %}"> a>div>
body>
login.html
<body>
<div class="container">
<form class="form-signin" method="post" novalidate>
{% csrf_token %}
<h2 class="form-signin-heading"> h2>
<input type="text" id="inputEmail" class="form-control" placeholder="username" name="username" required autofocus>
<input type="text" id="inputPassword" class="form-control" placeholder="Password" name="password" required>
<div><span STYLE="color: red">{{ error_msg }}span>div>
<div class="checkbox">
<label>
<input type="checkbox" value="remember-me"> Remember me
label>
div>
<button class="btn btn-lg btn-primary btn-block" type="submit"> button>
form>
div>
body>
요약: 1.Django 자체 User 테이블을 사용하면 자동 인증이 가능하며 User를 확장할 수 있습니다.
user=models.OneToOneField(User,on_delete=models.CASCADE)
2.
authenticate
활용 검증from django.contrib.auth import authenticate,login,logout
user=authenticate(username=username,password=password,role=role)
3. 인증 통과
login
로 로그인from django.contrib.auth import authenticate,login,logout
login(request,user) # ,
4.
logout
로 탈퇴 from django.contrib.auth import authenticate,login,logout
logout(request)
5.
login_required
를 이용하여 다른 URL에 로그인 권한 요구 사항 추가@login_required # , settings.py LOGIN_URL="/login" ( )
def crm(request):
return render(request,"userinfo.html")
로그인 권한이 필요한 URL은 settings에 따라 접근합니다.py리
LOGIN_URL
에서 점프 점프 후 URL:#http://127.0.0.1:8080/login?next=/crm
로그인 성공 점프에서 설정 가능:
return redirect(request.GET.get("next",'/crm'))
login 페이지에서 직접 로그인하면crm로 이동합니다. 다른 URL이면login으로 로그인하고 성공한 후에 다른 URL로 이동합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django 라우팅 계층 URLconf 작용 및 원리 해석URL 구성(URLconf)은 Django가 지원하는 웹 사이트의 디렉토리와 같습니다.그것의 본질은 URL과 이 URL을 호출할 보기 함수 사이의 맵표입니다. 위의 예제에서는 URL의 값을 캡처하고 위치 매개 변수로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.