이번에는 장고의 로그인, 로그아웃을 만들어 보겠어요.
가상 환경에서 애플리케이션을 하나 만들어주고
INSTALLED_APPS = [
........
'accounts',
]
settings.py 에서 INSTALLED_APPS에 앱 이름을 추가해주세요.
urlpatterns = [
path('signup/',views.signup, name='signup'),
path('login/',views.login, name='login'),
]
생성한 애플리케이션 안에 urls.py 새 파일을 생성하고
회원가입과 로그인의 코드를 입력해주세요.
urlpatterns = [
....
path('accounts/',include('accounts.urls')),
]
프로젝트 urls.py에 urlpatterns에 추가해주세요.
from django.shortcuts import render , redirect
from django.contrib.auth.models import User
from django.contrib import auth
def signup(request):
if request.method == "POST":
if request.POST["pw"] == request.POST["pw_ck"]:
user = User.objects.create_user(username=request.POST["username"],password=request.POST["pw"])
auth.login(request,user)
return redirect('/')
return render(request , 'accounts/signup.html')
return render(request , 'accounts/signup.html')
def login(request):
return render(request , 'accounts/login.html')
views.py에 회원가입, 로그인 함수를 입력해주세요.
{% extends 'app/base.html' %}
{% block content %}
<h1>회원가입</h1>
<form action="{% url 'signup' %}" method="POST">
{% csrf_token %}
Username : <input type="text" name="username">
password : <input type="password" name="pw">
password_ck : <input type="pssword" name="pw_ck">
<input type="submit" value="회원가입">
</form>
{% endblock %}
{% extends 'app/base.html' %}
{% block content %}
<h1>로그인</h1>
<form action="{% url 'login' %}" method="POST">
{% csrf_token %}
Username : <input type="text" name="username">
password : <input type="password" name="pw">
<input type="submit" vlaue="로그인">
</form>
{% endblock %}
templates 폴더를 만들고 회원가입 와 로그인의 템플릿을 만들어 주시고,
<a href="{% url 'login' %}">로그인</a>
<a href="{% url 'signup' %}">회원가입</a>
app/templates/app/index.html에 로그인과 회원가입의 a태그를 입력해주세요.
def login(request):
if request.method == "POST":
username = request.POST['username']
password = request.POST['pw']
user = auth.authenticate(request, username=username,password=password)
if user is not None:
auth.login(request,user)
return redirect('/')
else:
return render(request, 'accounts/login.html', {'error' : '아이디 비번 틀림'})
else:
return render(request , 'accounts/login.html')
views.py에서 login 함수를 수정하시고,
path('logout/',views.logout, name='logout'),
urls.py에 로그아웃 path 추가해주세요.
def logout(request):
auth.logout(request)
return redirect('/')
views.py에 logout 함수를 추가해주세요.
<a href="{% url 'logout' %}">로그아웃</a>
app/templates/app/index.html에 로그아웃 a태그를 추가하시고,
{% if user.username %}
{{ user.first_name }}
{% endif %}
마지막으로 index.html에서 로그인 상태와 로그아웃 상태를 확인해 주세요.
다음에는 회원에 대해서 회원 수정 회원 삭제를 적어 볼게요.
'IT > django(장고)' 카테고리의 다른 글
[django]장고 개발_8 - 이미지 저장,이미지 삭제 (0) | 2019.12.03 |
---|---|
[django]장고 개발_7 - 회원수정, 회원삭제, class has no objects member 에러해결 (0) | 2019.11.22 |
[django]장고 개발_5 - 리스트, 글쓰기 , 수정 , 삭제 (CRUD) (0) | 2019.11.16 |
[django]장고 개발_4 - index 연결 , 확장 (0) | 2019.11.15 |
[django]장고 개발_3 - 장고 mysql 연결, 모델 생성, 장고 관리자 (0) | 2019.11.15 |