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 |
Tags
- 멋사12
- 멋쟁이사자처럼11기
- 기사 제목 크롤링
- 백엔드
- 멋사10기
- 멋사11기
- ㅏㄴ
- 멋쟁이 사자처럼
- 멋쟁이사자처럼
- 멋사
- discord
- 멋쟁이사자처럼 서류
- API
- 웹동아리
- 멋사 서류
- 멋사 합격
- django
- 멋쟁이사자처럼10기
- 코딩동아리
- 깃허브
- IT동아리
- 알림봇
- 디스코드봇
- 멋사 10기
- 파이썬
- 멋사 면접
- 멋쟁이사자처럼대학
- 멋사 서류평가
- 크롤링
- 파이썬 크롤링
Archives
- Today
- Total
ACHO.pk devlog
[멋쟁이사저처럼10기] Django 개발자 대나무숲 프로젝트(로그인/로그아웃 구현하기) 본문
로그인/로그아웃 구현하기
1. 어플리케이션 accounts 생성 + 등록
2. bootstrap에서 다운받은 html 파일 중에 login.html이 있다. 이를 template 언어를 써서 로드 시켜주면 된다. 그리고 login.html에서 필요한 부분만 남겨놓고 다 지우면 된다.
urls.py
- url이 많을 경우에는 app 별로 urls.py를 만들어 include로 url를 계층적으로 관리하는 것이 더 좋다.
from accounts import views as accounts_views
urlpatterns = [
path('login/', accounts_views.login, name='login'),
path('logout/', accounts_views.logout, name='logout'),
path('signup/', accounts_views.signup, name='signup'),
]
accounts/views.py _ 로그인
- authenticate 메서드 : User 객체 반환 or None 반환
- if user is not None : django 회원이라면 로그인을 허용 + redirect 'home' 시킴
- 존재하지 않는 회원이라면 redirect 'bad_login.html'
from django.shortcuts import render
from django.contrib import auth #로그인 기능 수행
def login(request):
if request.method == "POST":
username = request.POST["username"]
password = request.POST["password"]
user = auth.authenticate(request, username=username, password=password)
if user is not None:
auth.login(request, user)
return redirect('home')
else:
return render(request, 'bad_login.html')
else:
return render(request, 'login.html')
bad_login.html
- login 페이지로 다시 갈 수 있도록 링크 연결한다.
존재하지 않는 회원입니다. 다시 로그인해주세요.
<br/>
<a href="{% url 'login' %}">다시 로그인하기</a>
accounts/views.py _ 로그아웃
def logout(request):
auth.logout(request)
return redirect('home')
현재 로그인한 User ID 띄우기
base.html ( 로그인html )
- {% if user.is_authenticated %} : 현재 로그인한 User라면 username를 띄운다.
- 그렇지 않다면 '로그인' 문자열을 띄운다.
<a class="CCC" href="#" id="userDropdown" role="button"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
{% if user.is_authenticated %}
<span class="AAA">{{user.username}}</span>
{% else %}
<span class="AAA">로그인</span>
{% endif %}
<img class="B_img" src="{% static 'img/profile.svg' %}">
</a>
로그인 버튼을 눌렀을 때 login form 이동
login.html
<form class="user" method="POST">
{% csrf_token %}
<div class="form-group">
<input type="text" class="form-control form-control-user"
id="username" name="username" aria-describedby="emailHelp"
placeholder="Enter Your ID...">
</div>
<div class="form-group">
<input type="password" class="form-control form-control-user"
id="password" name="password" placeholder="Password">
</div>
<div class="form-group">
<div class="custom-control custom-checkbox small">
</div>
</div>
<br/><br/><br/>
<input type="submit" value="login!" class="btn btn-success btn-user btn-block">
<hr>
<a href="{% provider_login_url 'google' %}" class="btn btn-google btn-user btn-block">
<i class="fab fa-google fa-fw"></i> 구글 계정으로 로그인
</a>
</form>
로그아웃 버튼 클릭 시 로그아웃
- logout 함수로 이동
<a class="AAA" href="{% url 'logout' %}">Logout</a>
로그인 상태일 때는 로그아웃 버튼, 로그아웃 상태일 때는 로그인 버튼
- base.html 일부
{% if user.is_authenticated %}
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="{% url 'logout' %}" data-toggle="modal" data-target="#logoutModal">
<i class="fas fa-sign-out-alt fa-sm fa-fw mr-2 text-gray-400"></i>
Logout
</a>
{% else %}
<a class="dropdown-item" href="{% url 'login' %}">
<i class="fas fa-user fa-sm fa-fw mr-2 text-gray-400"></i>
Login
</a>
{% endif %}
'멋쟁이사자처럼' 카테고리의 다른 글
[멋쟁이사자처럼10기] Django 개발자 대나무숲 프로젝트(회원가입) (0) | 2022.07.11 |
---|---|
[멋쟁이사자처럼10기] Django 개발자 대나무숲 프로젝트(자유게시판) (0) | 2022.07.11 |
[멋쟁이사저처럼10기] Django 개발자 대나무숲 프로젝트(댓글 구현하기) (0) | 2022.07.09 |
[멋쟁이사저처럼10기] Django 개발자 대나무숲 프로젝트(익명 게시판) (0) | 2022.07.08 |
[멋쟁이사저처럼10기] Django 블로그 만들기(로그인/로그아웃) (0) | 2022.07.08 |
Comments