250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- shared lock
- 연결리스트
- PS
- 낙관적락
- CHECK OPTION
- 즉시로딩
- 다대일
- 비관적락
- 유니크제약조건
- 지연로딩
- exclusive lock
- FetchType
- 다대다
- BOJ
- eager
- dfs
- 힙
- execute
- JPQL
- fetch
- querydsl
- 일대다
- 백트래킹
- SQL프로그래밍
- 이진탐색
- 스프링 폼
- 데코레이터
- 연관관계
- 스토어드 프로시저
- 동적sql
Archives
- Today
- Total
흰 스타렉스에서 내가 내리지
회원가입, 로그인, 로그아웃 본문
728x90
회원 관리를 위해서는 새로운 앱을 하나 만들어 줘야 한다
그 앱 상에서 로그인, 로그아웃, 회원가입을 관리해 주는게 효율적이다
앱 생성
python3 manage.py startapp accounts
settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blogapp',
'accounts'
]
로그인
urls.py
from accounts import views as accounts_views
...
...
urlpatterns = [
...
...
...
path('login', accounts_views.login, name='login'),
]
accounts/views.py
def login(request):
if request.method == 'POST':
pass
else:
return render(request, 'login.html')
accounts/templates/login.html
<form action="{% url 'login' %}" method='POST'>
{% csrf_token %}
username :
<input type="text" name='username'>
password :
<input type="password" name='password'>
<br>
<input type="submit" value="로그인">
</form>
장고는 기본적으로 User를 관리할 수 있게 해준다.
views.py
from django.shortcuts import redirect, render
from django.contrib import auth
from django.contrib.auth.models import User
def login(request):
if request.method == 'POST':
userid = request.POST['username']
userpw = request.POST['password']
user = auth.authenticate(request, username=userid, password=userpw)
if user is not None:
auth.login(request, user)
return redirect('home')
else:
return render(request, 'login.html')
else:
return render(request, 'login.html')
index.html
{% if user.is_authenticated %}
안녕하세요,
{{ user.username }}
님!!
{% else %}
<a href="{% url 'login' %} ">로그인</a>
{% endif %}
<h1>짱구야 놀자</h1>
...
...
로그인하면 리다이렉트 할 곳을 settings.py에서 지정해줄 수도 있다.
LOGIN_REDIRECT_URL = "/"
로그아웃
urls.py
path('login', accounts_views.login, name='login'),
path('logout', accounts_views.logout, name='logout'),
views.py
def logout(request):
auth.logout(request)
return redirect('home')
회원가입
urls.py
path('signup', accounts_views.signup, name='signup'),
signup.html 생성
<form action="{% url 'signup' %}" method='POST'>
{% csrf_token %}
username :
<input type="text" name="user-id" maxlength="10">
password :
<input type="password" name="user-pw">
<br>
<input type="submit">
</form>
views.py
def signup(request):
if request.method == 'POST':
user = User()
user.username = request.POST['user-id']
user.set_password(request.POST['user-pw'])
user.save()
return redirect('home')
return render(request, 'signup.html')
def signup(request):
if request.method == 'POST':
if request.POST['password'] == request.POST['repeat']:
# 회원가입
new_user = User.objects.create_user(username=request.POST['username'], password=request.POST['password'])
# 로그인
auth.login(request, new_user)
# 홈 리다이렉션
return redirect('home')
return render(request, 'register.html')
index.html 에 회원가입 앵커 추가
{% if user.is_authenticated %}
안녕하세요,
{{ user.username }}
님!!
<a href="{% url 'logout' %} ">로그아웃</a>
{% else %}
<a href="{% url 'login' %} ">로그인</a>
<a href="{% url 'signup' %} ">회원가입</a>
{% endif %}
<h1>짱구야 놀자</h1>
'Django' 카테고리의 다른 글
django에서 민감한 데이터를 숨기는 일반적인 방법 (0) | 2022.06.09 |
---|---|
pagination (0) | 2022.06.09 |
댓글 (0) | 2022.06.08 |
사용자가 media 를 업로드 할 수 있도록 (0) | 2022.06.08 |
게시글 detail 페이지 구현 (0) | 2022.06.08 |