본문 바로가기

IT/django(장고)

[django]장고 개발_6 - 장고 회원가입, 로그인, 로그아웃

이번에는 장고의 로그인, 로그아웃을 만들어 보겠어요.

가상 환경에서 애플리케이션을 하나 만들어주고

 

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에서  로그인 상태와 로그아웃 상태를 확인해 주세요.

다음에는 회원에 대해서 회원 수정 회원 삭제를 적어 볼게요.