일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- codetree
- 백트래킹
- 코드트리
- DP
- 실습
- Bellman-Ford
- 소프트웨어공학
- Planned
- DFS
- 그리디알고리즘
- django
- 마라마라빔
- 종합설계
- 파이썬
- 모각코
- 데이터베이스
- 프로그래머스
- Kruskal
- programmers
- 함밥
- 동적계획법
- 최소스패닝트리
- 알고리즘
- BFS
- minimum spanning tree
- MyPlaylist
- 장고
- 백준
- SQL
- B대면노래방
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