장고 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 |
'코딩 연습 > Django' 카테고리의 다른 글
Form을 통해 데이터 입력 받기 (0) | 2019.05.13 |
---|---|
UnicodeDecodeError: 'cp949' codec can't decode byte 0xe2 in position 9735: illegal multibyte sequence (5) | 2019.04.23 |
pip 라이브러리 정리 및 클론하기 (0) | 2018.12.11 |
회원가입시 그룹 추가시키기 (0) | 2018.12.06 |
공통된 2개 뷰 함수를 1개로 만들어 호출해서 사용하기 (0) | 2018.12.06 |