장고 2.1버전으로 새 블로그를 만들면서 프로젝트 폴더의 urls.py 안에서 인증 처리를 하는 방법을 배웠다.


기존에 내가 해오던 방식은, 


1) app폴더 urls.py에서 login, logout url을 등록

2) login 템플릿 만들기 (로그인 폼)

3) views.py에서 login, logout 함수를 호출하여 view 함수 만들기


3단계를 거쳐서 만들었다면,


1) 프로젝트 폴더 urls.py에서 django.contrib.auth에 포함된 views를 호출. views에 포함된 LoginView와 LogoutView를 path에 담아서 그대로 사용. 

2) login 템플릿 만들기 (로그인 폼)


1
2
3
4
5
6
7
8
9
10
from django.contrib import admin
from django.urls import path, include
from django.contrib.auth import views as auth_views
 
urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('blog.urls')),
    path('accounts/login/', auth_views.LoginView.as_view(template_name='registration/login.html'), name='login'),
    path('accounts/logout/', auth_views.LogoutView.as_view(next_page='/'), name='logout'),
]
cs



1
2
path('accounts/login/', auth_views.LoginView.as_view(template_name='registration/login.html'), name='login')
# 템플릿 경로 
cs


1
2
path('accounts/logout/', auth_views.LogoutView.as_view(next_page='/'), name='logout')
# next_page는 리다이렉트 페이지로서 기본페이지 설정
cs



그리고 로그인 폼


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{% extends 'blog/base.html' %}
 
{% block body %}
<div class="jumbotron">
  <h2>Please Login:</h2>
  <h3>(Must be SuperUser, please check with the site admin)</h3>
 
  {% if form.errors %}
    <p>Your username and password didn't match! Please try again.</p>
  {% endif %}
 
  <form action="" method="post">
    {% csrf_token %}
      {{ form.as_p }}
      <input type="submit" class="btn btn-primary" value="Login">
      <input type="hidden" class="next" value="{{ next }}">
  </form>
</div>
{% endblock %}
cs


블로그 이미지

쵸잇

,