toy_project

02. Django 간단한 로그인 페이지 구현

인계동ADHD환자 2022. 2. 21. 23:09
728x90

Django
pip install Django
python manage.py startproject mysite_login
pthon manage.py startapp user
-> 앱만들어줬으면 바로 setting.py에 앱추가 users
유저는 장고에서 중요한 부분을 차지하고 여러부분에서 상호적으로 작용하는 부분이 많기 때문에
setting.py에다가 어떤걸 주 베이스 유저로 쓸건지 말을 해줘야한다
AUTH_USER_MODEL = 'user(앱이름).User'
python manage.py makemigrations > 모델에 저장 예정을 장고에게 알려줌
AbtractUser에서 기본적으로 제공해주는 모델들을 볼 수 있음
python manage.py migrate > db에 실제 테이블 생성시키기
abstractUser
->장고에서 기본적으로 제공하는 유저에 관한 기능들을 전부 포함한 유저 모델을 만들 수 있다

 

from django.db import models
from django.contrib.auth.models import AbstractUser

# AbstractUser를 상속 받은 클래스 만들기
# 장고에서 기본적으로 제공하는 유저에 관한 기능들을 전부 포함한 유저 모델을 만들 수 있다
class User(AbstractUser):
    student_id = models.CharField(max_length=10)
from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login, logout
from .models import User
# Create your views here.

def login_view(request):
    # 제출 버튼을 눌렀을 때 post로 request가 들어왔을 때
    if request.method == "POST":
        username = request.POST["username"]
        password = request.POST["password"]
        user = authenticate(username=username, password=password)
        if user is not None:
            print("인증성공")
            login(request, user)
        else:
            print("인증실패")
    return render(request, "users/login.html")

def logout_view(request):
    logout(request)
    #
    return redirect("users:login")

간단한 로그인 화면이고 request로 받은 결과를 models에 저장할 수 있음

회원가입을 누르면 새로운 html로 넘어감

각 폼에 맞춰서 데이터를 입력하면 입력값들이 models의 칼럼에 맞춰 저장을 시킬 수 있음

 

def signup_view(request):

    if request.method == "POST":
        username = request.POST['username']
        password = request.POST['password']
        firstname = request.POST['firstname']
        lastname = request.POST['lastname']
        email = request.POST['email']
        student_id = request.POST['student_id']

        user = User.objects.create_user(username=username, password=password, first_name=firstname,
                                 last_name=lastname, email=email, student_id=student_id)
        user.save()
        # 회원가입이 끝난 다음에는 로그인하는 화면으로 넘겨줌
        return redirect("users:login")

    return render(request, "users/signup.html")

 

728x90