회원이 이미 정해진 서비스를 만들 경우,
관리자가 데이터베이스에 직접 회원 정보를 저장하여 회원이 로그인할 수 있도록 한다.
1. 프로젝트 만들기
2020/07/08 - [웹프로그래밍/Django] - Project 시작하기
2. 로그인 페이지 작성
로그인용 html파일을 생성한다.
#login.html
<h1>Login</h1>
<form>
<p>ID </p>
<input name="id" type="text" value="">
<br>
<p>Password </p>
<input name="password" type="password" value="">
<br>
<br>
<input class="btn btn-primary" type="submit" value="Login">
</form>
위에서 만든 html파일을 띄워주기 위해 views.py와 urls.py를 수정한다.
#views.py
def login(request):
return render(request, '앱이름/login.html')
def logout(request):
return render(request, '앱이름/login.html')
로그인을 하면 홈페이지가 뜨고, 로그아웃을 하면 로그인 페이지가 나온다.
로그인과 로그아웃의 기능이 다르기 때문에 따로 작성해준다.
#urls.py
from . import views
urlpatterns = [
path('login/', views.login, name='login'),
path('logout/',views.logout, name='logout'),
]
3. 로그인 & 로그아웃 기능 구현
#login.html
<h1>Login</h1>
<form method="POST" action="{% url 'login'%}">
{% csrf_token %} #보안토큰
<p>ID </p>
<input name="id" type="text" value="">
<br>
<p>Password </p>
<input name="password" type="password" value="">
<br>
<br>
<input class="btn btn-primary" type="submit" value="Login">
</form>
form의 통신 방식은 post 방식을 이용한다.
views.py에서 실질적인 기능을 구현한다.
#views.py
from django.shortcuts import render, redirect
from django.contrib import auth
def login(request):
if request.method == 'POST': # POST 방식으로 request를 통해 정보가 오면
# 변수(좌변이 변수이름)에 저장시켜 사용한다.
id = request.POST['id']
password = request.POST['password']
# 로그인
# auth는 django에서 기본적으로 제공하는 기능으로 username, password라는 명칭을 쓴다.
user = auth.authenticate(request, username=id, password=password)
# 성공
if user is not None:
auth.login(request, user)
return redirect('home')
# 실패
else:
return render(request, 'login.html', {'error': 'id or password is incorrect.'})
else:
return render(request, 'login.html')
def logout(request):
if request.method == 'POST': # POST 방식으로 request를 통해 정보가 오면
# 로그아웃
auth.logout(request)
return redirect('home')
return render(request, 'accounts/login.html')
마지막으로, 로그인한 상태에서만 보이는 내용을 처리해주기 위해서
내용 앞에 {% if user.is_authenticated %}, 뒤에는 {% endif %}를 붙여준다.
4. 확인하기
먼저, terminal에 admin용 아이디와 비밀번호를 만든다.
$ python manage.py createsuperuser
비밀번호는 입력했을 때 보이지않기 때문에 기억하고 있어야 한다.
주소창 뒤에 /admin을 입력하고 생성한 아이디와 비밀번호를 입력하면 아래와 같은 화면이 뜬다.
Users에 Add버튼을 클릭하면, 아래와 같은 화면이 뜬다.
아이디 비번을 입력해서 SAVE한 뒤 다시 원래 로그인 화면으로 돌아가서 로그인이 되는지 확인하면 된다.
'Programming > Django' 카테고리의 다른 글
Django 입력 받기 (0) | 2021.05.31 |
---|---|
Django API 서버 만들기 (0) | 2021.04.13 |
REST API 서버 - 기본 세팅 (0) | 2021.04.11 |
Static 파일 (0) | 2020.07.08 |
Project 시작하기 (0) | 2020.07.08 |