ACCOUNT(Login,Logout,signup)

hey hey·2021년 12월 7일
0

Django

목록 보기
2/9
post-thumbnail
# bash
python manage.py startapp accounts
# settings
INSTALLED_APPS = [
    'community',
    'accounts']
# urls
path('accounts/',include('accounts.urls')),

LOGIN

form을 먼저 설정해야 로그인창 및 회원가입이 가능

# forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth import get_user_model

class CustomUserCreationForm(UserCreationForm):
    class Meta:
        model = get_user_model()
        fields = ('email','first_name','last_name')
# urls
urlpatterns = [
    path('login/',views.login,name='login')]
# views
from django.contrib.auth.forms import AuthenticationForm
from django.contrib.auth import login as auth_login

def login(request):
    if request.user.is_authenticated: # 로그인이 되어있다면?
        return redirect('community:index') 
    if request.method=="POST": 
        form = AuthenticationForm(request,request.POST) # 
        if form.is_valid():
            auth_login(request,form.get_user)
            return redirect(request.GET.get('next') or 'community:index')
    else:
        form = AuthenticationForm()
    context ={
        'form':form
    }
    return render(request,'accounts/login.html',context)
# login.html
{% extends 'base.html' %}
{% block content %}
  <h1>LOG-IN</h1>
  <form action="" method="POST">
    {% csrf_token %}
    {{form.as_p}}
    <input type="submit">
  </form>
{% endblock content %}

SIGN-UP

# urls
path('signup/',views.signup,name='signup'),
# views
from django.contrib.auth.forms import UserCreationForm
def signup(request):
    if request.user.is_authenticated:
        return redirect('community:index')
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            user = form.save()
            auth_login(request,user)
            return redirect('community:index')
    else:
        form = UserCreationForm()
    context={
        'form':form
    }
    return render(request,'accounts/signup.html',context)
# signup.html
{% extends 'base.html' %}
{% block content %}
  <form action="" method="POST">
    {% csrf_token %}
    {{ form.as_p }}
    <input type="submit">
  </form>
{% endblock content %}

LOG-OUT

path('logout/',views.logout,name='logout')
# views
from django.contrib.auth import logout as auth_logout
def logout(request):
    if request.user.is_authenticated:
        auth_logout(request)
    return redirect('community:index')

데코레이터 사용법

from django.views.decorators.http import require_http_methods

@require_http_methods(['POST','GET'])
def login(request):

@require_http_methods(['POST','GET'])
def signup(request):
profile
FE - devp

0개의 댓글