| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- 그리디알고리즘
- DFS
- 종합설계
- 프로그래머스
- MyPlaylist
- SQL
- programmers
- 알고리즘
- 백트래킹
- 장고
- 모각코
- minimum spanning tree
- 소프트웨어공학
- 백준
- Kruskal
- 마라마라빔
- 데이터베이스
- codetree
- 실습
- Bellman-Ford
- 코드트리
- 최소스패닝트리
- django
- BFS
- 파이썬
- B대면노래방
- 함밥
- DP
- 동적계획법
- Planned
Archives
- Today
- Total
Leta Learns
django | User 모델을 이용한 login, logout 본문
python manage.py startapp account #account 앱 생성
=> account/urls.py 정의, settings.py, modelproject/urls.py 수정
account 폴더 내에 templates 폴더 생성
=> signup.html, login.html 생성
(signup, login 페이지 모두 ModelForm 사용)
=> account/views.py, account/urls.py에 새 html파일들 연결
account/views.py (login 구현)
from django.shortcuts import render, redirect
from django.contrib.auth.forms import AuthenticationForm
from django.contrib import auth
# Create your views here.
def login_view(request):
if request.method == 'POST':
form = AuthenticationForm(request=request, data=request.POST)
if form.is_valid():
username = form.cleaned_data.get('username')
password = form.cleaned_data.get('password')
user = auth.authenticate(
request=request,
username=username,
password=password
)
if user is not None:
auth.login(request, user)
return redirect('home')
return redirect('account:login')
else:
form = AuthenticationForm()
return render(request, 'login.html', {'form' : form})
- 이번에도 ModelForm 사용. 이번에는 AuthenticationForm을 import해서 사용 (직접 작성 x)
- AuthenticationForm에서 받아온 username, password에 대해 유효성 검사 => username, password 변수에 저장
form.cleaned_data
: is_valid()를 통해 유효성 검사를 한 이후 필요에 따라서 유효한 데이터들은 form.cleaned_data라는 딕셔너리 값으로 넘어온다.
- 해당 username과 password에 일치하는 User모델이 있는지 확인 (음.. 이 부분 잘 모르겠다)
- user가 존재하는 경우 (if user is not None:), 로그인 한 후 home 화면으로 redirect
- form.is_valid()에서 False가 리턴되거나 user가 존재하지 않는 경우 계속 login화면에 머무름.
- if request.method != 'POST': (form 데이터가 제출되지 않는 상황). => AuthenticationForm을 form 변수에 담아서 login.html에 띄워준다.
으음.. 어제는 괜찮았는데 다시 보니 이해 안 가는 부분이 좀 있다. 복습 필요.
account/views.py (logout 구현)
def logout(request):
auth.logout(request)
return redirect('home')
로그아웃 한 후 home 화면으로 돌아가기
views에 함수를 추가했으니 url에서도 해당 경로 추가해야함.
NavBar 수정 (in base.html)
modelproject/templates/base.html
=> li 태그들 끝에 코드 추가 (<ul/> 앞에 추가)
'Django' 카테고리의 다른 글
| 쿼리 스트링 Query String (0) | 2021.07.18 |
|---|---|
| django | User 모델을 이용한 Signup, User 확장 (0) | 2021.07.16 |
| django | Forms (0) | 2021.07.08 |
| django | Media 파일 (0) | 2021.07.08 |
| django | Static 파일 (0) | 2021.07.07 |
Comments