django 11 sign_in_view

Grace Goh·2022년 10월 9일
0

Django

목록 보기
12/32

회원가입/로그인 기능이 들어있는 곳은
user (app) / views.py

로그인은 sign_in_view() 함수에 들어있다.
로그인 요청은 POST 요청이다.

def sign_in_view(request):
    if request.method == 'POST':
        username = request.POST.get('username', None)
        password = request.POST.get('password', None)

		# 해당 username 사용자를 UserModel에서 찾기
        me = UserModel.objects.get(username=username)
        if me.password == password: # 있다면 pw를 DB와 비교
            request.session['user'] = me.username # 동일하면 사용자를 세션에 추가; 로그인 상태로 만들어주고
            return HttpResponse(me.username)
        else: # 아니라면 다시 로그인 화면
            return redirect('/login')

    elif request.method == 'GET':
        return render(request, 'user/signin.html')

from django.shortcuts import render, redirect
from .models import UserModel
from django.http import HttpResponse
from django.contrib.auth import get_user_model
from django.contrib import auth # 추가


def sign_in_view(request):

    if request.method == 'POST':
        username = request.POST.get('username', None)
        password = request.POST.get('password', None)

        # UserModel이 아니라 인증기능 authenticate 모델을 가져오기
        # 현재 입력 pw와 암호화된 pw가 일치하는지, 그게 사용자와 일치하는지까지 확인
        me = auth.authenticate(request, username=username, password=password)
        # me = UserModel.objects.get(username=username) # '나'라는 사용자를 가져오기

        if me is not None: # 사용자가 있는지 없는지만 확인하면 된다. 위의 me에서 모든 사용자의 정보를 체크하기 때문.
        # if me.password == password: # pw를 비교하는 게 아니라
            auth.login(request, me)
            # request.session['user'] = me.username
            return HttpResponse(me.username)
            
        else:
            return redirect('/login')

    elif request.method == 'GET':
        return render(request, 'user/signin.html')

from django.shortcuts import render, redirect
from .models import UserModel
from django.http import HttpResponse
from django.contrib.auth import get_user_model
from django.contrib import auth


def sign_in_view(request):

    if request.method == 'POST': # 화면에서 정보를 입력 받음
        username = request.POST.get('username', None)
        password = request.POST.get('password', None)

        # 받은 정보를 django module로 넣어준다; 사용자가 있다면 변수 me에 사용자를 넣어준다.
        me = auth.authenticate(request, username=username, password=password)
        if me is not None: # 사용자가 있다면
            auth.login(request, me) # 로그인을 한다.
            return HttpResponse(me.username)
        else:
            return redirect('/login')

    elif request.method == 'GET':
        return render(request, 'user/signin.html')

profile
Español, Inglés, Coreano y Python

0개의 댓글