프로그래밍/python

Python (Django) 기초_User

해아's 2022. 10. 7. 21:27

장고는 회원관리가 기본으로 제공된다(최고!!)

 

회원가입부터 만들어보자꾸나

 

py .\manage.py startapp user

/user/views.py

from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
from django.shortcuts import redirect,render

# Create your views here.
def signup(request):

    if request.method == 'POST':
        signupForm = UserCreationForm(request.POST)
        if signupForm.is_valid():
            signupForm.save()
            return redirect('/user/login')
    else:
        signupForm = UserCreationForm()
    return render(request,'user/signup.html',{'signupForm':signupForm})

urls.py > urlpatterns 에 회원가입 추가  path('user/signup',user.views.signup),

 

회원가입 템플릿 추가

signup.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>회원 가입</title>
</head>
<body>
<form method="post">
  {% csrf_token %}
  {{ signupForm }}
  <input type="submit" name="회원가입">
</form>
</body>
</html>

다음은 로그인이다

내가 login으로 함수를 선언했는데 이미 장고에서 login 함수가 있다 그래서 그 함수를 나는 auth_login으로 변경하여 사용하겠다고 선언하는것이다.

#상단에 추가
from django.contrib.auth import login as auth_login
#이거

#로그인함수
def login(request):
    if  request.method == 'POST':
        loginForm = AuthenticationForm(request,request.POST)
        if loginForm.is_valid():
            auth_login(request,loginForm.get_user())
            return redirect('/board/list')
        else:
            return redirect('/user/login')
    else:
        loginForm = AuthenticationForm()

    return render(request,'user/login.html',{'loginForm':loginForm})

로그아웃도 동일하다.

from django.contrib.auth import logout as auth_logout

def logout(request):
    auth_logout(request)
    return redirect('/user/login')
728x90
반응형