티스토리 뷰
[django 블로그] 로그인 로그아웃(templates, login.html, django.contrib.auth)
지휘리릭 2020. 1. 28. 21:31● 로그인
- 이번 프로젝트에서는 장고 내장 모듈 'django.contrib.auth'을 사용하여 로그인, 로그아웃을 구현한다.
- 해당 모듈을 사용하면 views.py , forms.py 등 관련 로직을 구현할 필요가 없다. 이미 인증 관련 URL 과 view 들이 미리 정의되어있기 때문이다.
- 대신 화면을 나타낼 templates와 경로 urls.py 에 대한 구현은 필요하다.
django_blog/settings.py
- 로그인, 로그아웃 이후에 어떤 화면으로 넘어가는지 정의한다. 일단은 홈화면으로 돌려놓는다.
LOGIN_REDIRECT_URL = '/'
LOGOUT_REDIRECT_URL = '/'
django_blog/urls.py
- URL 경로에서 'accounts/ ' 를 입력하면, django.contrib.auth.urls 에서 정의한 경로로 이동한다.
from django.urls import path, include
urlpatterns = [
path('accounts/', include('django.contrib.auth.urls')),
]
- 장고에서 지원하는 인증 기능들은 아래와 같다. 로그인을 하고싶으면 http://127.0.0.1:8000/accounts/login 으로 이동하면 된다.
^login/$ [name='login']
^logout/$ [name='logout']
^password_change/$ [name='password_change']
^password_change/done/$ [name='password_change_done']
^password_reset/$ [name='password_reset']
^password_reset/done/$ [name='password_reset_done']
^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$ [name='password_reset_confirm']
^reset/done/$ [name='password_reset_complete']
templates/registration/login.html
- 그러면 어떻게 html과 연결될 수 있을까? 바로 'templates/registration' 경로로 이동해서 'login.html' 파일로 자동으로 연결된다.
-'TemplateDoesNotExist at /accounts/login/' 에러가 발생했다면, 바로 templates/registration 경로 아래에 'login.html' 파일을 저장해야한다. 이 설정 값을 바꾸는 방법도 나중에 알아봐야겠다.
{% extends 'base_.html' %}
{% block title %} 로그인 {% endblock %}
{% block page %}login{% endblock %}
{% block content %}
<div style = "padding-left:50px; padding-top:50px;">
<h1>Login</h1>
<hr>
<form method = "post" action = "{% url 'login' %}">
{%csrf_token%}
<input type = "hidden" name = "next" value = "">
{{form.as_p}}
<button class = "btn btn-primary" type = "submit">로그인</button>
</form>
</div>
{% endblock %}
실행 결과
- 해당 URL로 넘어가면 놀랍게도 로그인 기능이 실행된다.
● 로그아웃
- 로그아웃은 그 어떤 템플릿도 필요 없기 때문에 따로 설정하지 않아도 된다. 그러니 그냥 잘 작동되는지만 확인한다.
- sessionid가 저장되고 삭제되는 것을 보면서 로그인 로그아웃을 확인한다.
- 로그인 했을 때에는 다음과 같이 sessionid가 저장된다.
- 로그아웃 하고 난 이후에는, sessionid가 삭제됐다. Page not found 가 뜬 이유는 settings.py LOGOUT_REDIRECT_URL에서 정의한 '/' 홈화면을 아직 정의하지 않았기 때문이다.
'django project > 블로그' 카테고리의 다른 글
- Total
- Today
- Yesterday
- iOS UITableView 출력안됨
- 테이블출력안됨
- pythonanywhere배포
- CellForRowAt 호출안됨
- iOS 검은 화면
- ModelForm Form 차이
- 실시간 데이터베이스
- iOS 데이터베이스
- Realtime Database
- 장고 태그달기
- 웹 배포
- django 게시판
- iOS 화면 안나옴
- 데이터베이스 추천
- django pythoneverywhere
- Django
- 까만 화면
- UITableViewController Not Working
- cleaned_data
- pythonanywhere배포방법
- django 개발일지
- CellForRowAt Not Called
- python 웹 배포
- django 로그인접근
- django clean
- django tag
- Firebase 데이터베이스 추천
- 장고 게시판
- 알파벳 카운팅
- django 태그
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |