๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“๐Ÿ’ช/Django

3์ฃผ์ฐจ_2๋ฒˆ์งธ_ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ ์ˆ˜์ •ํ•˜๊ธฐ

by ์ˆ˜์จ”์•™ 2022. 9. 23.

์ง€๋‚œ ์‹œ๊ฐ„์— ๊ธฐ๋ณธ์ ์ธ ์žฅ๊ณ ์˜ ์‚ฌ์šฉ์ž ๋ชจ๋ธ์„ ๋ฐ”๊ฟ”์„œ

AUTH_USER_MODEL์— user.UserModel ํด๋ž˜์Šค๋ฅผ ๋„ฃ์–ด์คฌ๊ธฐ ๋•Œ๋ฌธ์—

์ด ๋ฐ”๋€ ๋‚ด์šฉ์„ ์ „์— ์ž‘์„ฑํ–ˆ๋˜ ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ ๋ชจ๋ธ์—์„œ๋„ ๋ชจ๋‘ ๋ฐ”๊ฟ”์ค˜์•ผ ํ•œ๋‹ค!

user ์•ฑ์˜ views.py์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํŒŒ์ผ ์ˆ˜์ •ํ•ด์ฃผ์ž!

 

 

ํšŒ์›๊ฐ€์ž… ์ˆ˜์ •ํ•˜๊ธฐ(sign_up_view)

 

user ์•ฑ์˜ views.py์— sign_up_view ํ•จ์ˆ˜๋ฅผ ์ˆ˜์ •ํ•ด๋ณด์ž!

๋จผ์ € ๋งจ ์ƒ๋‹จ์— ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜์ž

# user/views.py
from django.contrib.auth import get_user_model #์‚ฌ์šฉ์ž๊ฐ€ ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌํ•˜๋Š” ํ•จ์ˆ˜

 

post๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•œ๋‹ค!

 

# user/views.py

def sign_up_view(request):
    if request.method == 'GET':
        return render(request, 'user/signup.html')
    elif request.method == 'POST':
        username = request.POST.get('username', None)
        password = request.POST.get('password', None)
        password2 = request.POST.get('password2', None)
        bio = request.POST.get('bio', None)

        if password != password2:
            return render(request, 'user/signup.html')
        else:
            exist_user = get_user_model().objects.filter(username=username)
            if exist_user:
		return render(request, 'user/signup.html') # ์‚ฌ์šฉ์ž๊ฐ€ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ ๋„์›€
            else:
                UserModel.objects.create_user(username=username, password=password, bio=bio)
                return redirect('/sign-in') # ํšŒ์›๊ฐ€์ž…์ด ์™„๋ฃŒ๋˜์—ˆ์œผ๋ฏ€๋กœ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™

 

์„œ๋ฒ„ ๋Œ๋ ค์„œ ํšŒ์›๊ฐ€์ž…ํ•˜๋‹ˆ๊นŒ

์‹ ๊ธฐํ•˜๊ฒŒ ์•„์ฃผ ์ž˜ ๋‚˜์˜จ๋‹ค!! ์ด์ œ ๋กœ๊ทธ์ธ์„ ์ˆ˜์ •ํ•ด๋ณด์ž!

 


๋กœ๊ทธ์ธ ์ˆ˜์ •ํ•˜๊ธฐ(sign_in_view)

 

sign_up ๊ณผ ๋™์ผํ•˜๊ฒŒ user ์•ฑ์˜ views.py์˜ sign_up_view๋ฅผ ์ˆ˜์ •ํ•ด์ฃผ์ž!

 

๋จผ์ € ์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์ž!

์žฅ๊ณ ๊ฐ€ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“ˆ ์ถ”๊ฐ€ํ•ด์ฃผ๋Š” ๊ฒƒ!

# user/views.py
from django.contrib import auth # ์‚ฌ์šฉ์ž auth ๊ธฐ๋Šฅ

 

์•„๋ž˜์˜ ์ฝ”๋“œ๋กœ ์ˆ˜์ •ํ•ด์•ผํ•œ๋‹ค

์—ฌ๊ธฐ์— authenticate๋ผ๋Š” ๊ธฐ๋Šฅ์€ ์•”ํ˜ธํ™”๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ์ž…๋ ฅํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜ํ•˜๋Š”์ง€ ์‚ฌ์šฉ์ž์™€ ๋งž๋Š”์ง€

ํ•œ๋ฒˆ์— ํ™•์ธ์‹œ์ผœ์ค€๋‹ค!!

me = auth.authenticate(request, username=username, password=password)

 

๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€๋งŒ ๊ตฌ๋ถ„ํ•ด์ฃผ๋ฉด ๋˜๊ธฐ๋•Œ๋ฌธ์— if ๋ฌธ๋„ ์ˆ˜์ •ํ•ด์ค€๋‹ค

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

        me = auth.authenticate(request, username=username, password=password) 
        if me is not None:  # ์ €์žฅ๋œ ์‚ฌ์šฉ์ž์˜ ํŒจ์Šค์›Œ๋“œ์™€ ์ž…๋ ฅ๋ฐ›์€ ํŒจ์Šค์›Œ๋“œ ๋น„๊ต
            auth.login(request, me)
            return HttpResponse("๋กœ๊ทธ์ธ ์„ฑ๊ณต")
        else:
            return redirect('/sign-in')  # ๋กœ๊ทธ์ธ ์‹คํŒจ
    elif request.method == 'GET':
        return render(request, 'user/signin.html')

 

 

 

 

 

 

 

 

 

 

 

728x90

๋Œ“๊ธ€