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

2์ฃผ์ฐจ_5๋ฒˆ์งธ_๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ๋งŒ๋“ค๊ธฐ

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

ํšŒ์›๊ฐ€์ž… ํ–ˆ์œผ๋‹ˆ๊นŒ ๋กœ๊ทธ์ธ๋„ ๋  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด๋ณด์ž!!!!

 

ํšŒ์›๊ฐ€์ž…์œผ๋กœ ์ €์žฅ๋œ ์œ ์ €๋ฅผ ๋กœ๊ทธ์ธ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ์ž!

์„ธ์…˜์„ ์ด์šฉํ•  ๊ฑด๋ฐ

์„ธ์…˜์€ ๊ฐ™์€ ์‚ฌ๋žŒ์ด ์š”์ฒญํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค!

 

1. user ์•ฑ์˜ views.py ์„ธํŒ…ํ•˜๊ธฐ

2. signin.html์˜ form ํƒœ๊ทธ ์†์„ฑ ๋„ฃ๊ธฐ

3. view์˜ ๋กœ๊ทธ์ธ ์ž‘์—… ๋งˆ๋ฌด๋ฆฌํ•˜๊ธฐ

 


1. user ์•ฑ์˜ views.py ์„ธํŒ…ํ•˜๊ธฐ

 

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


# Create your views here.
def sign_up_view(request):
    if request.method == 'GET': # GET ๋ฉ”์„œ๋“œ๋กœ ์š”์ฒญ์ด ๋“ค์–ด ์˜ฌ ๊ฒฝ์šฐ
        return render(request, 'user/signup.html')

    elif request.method == 'POST': # 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:
            new_user = UserModel()
            new_user.username = username
            new_user.password = password
            new_user.bio = bio
            new_user.save()
        return redirect('/sign-in')


def sign_in_view(request):
    if request.method == 'POST':
        return HttpResponse("๋กœ๊ทธ์ธ ์„ฑ๊ณต!")
    elif request.method == 'GET':
        return render(request, 'user/signin.html')

 

HttpResponse๋ฅผ ์ด์šฉํ•ด์„œ ๋กœ๊ทธ์ธ ์„ฑ๊ณตํ•˜๋ฉด ๋ฉ”์„ธ์ง€ ๋„์›Œ์ฃผ๋ ค๊ณ  import ๋ฏธ๋ฆฌ ํ•ด๋‘๊ณ 

post ์š”์ฒญ์ด๋ฉด ๋ฉ”์„ธ์ง€์ฐฝ ๋„์›Œ์ฃผ๊ณ 

get ์ด๋ฉด ํ™”๋ฉด์„ ๋ณด์—ฌ์ฃผ์ž!

 

 

2. signin.html์˜ form ํƒœ๊ทธ ์†์„ฑ ๋„ฃ๊ธฐ

 

<!-- ์œ—๋ถ€๋ถ„ ์ƒ๋žต -->
<div class="wrap">
    <h2 class="title-center"> ๋กœ๊ทธ์ธ</h2>
    <form class="form-area" action="/sign-in/" method="post">
        {% csrf_token %}
        <div class="form-group mt-2 mb-2">
<!-- ์•„๋žซ ๋ถ€๋ถ„ ์ƒ๋žต -->

method๋กœ post ์ธ๊ฑฐ ์•Œ๋ ค์ฃผ๊ณ , action์œผ๋กœ sign-in์— ๊ฐˆ๊ฑฐ๋ผ๊ณ  ์•Œ๋ ค์ฃผ์ž!

๋ณด์•ˆ๋„ ์ถ”๊ฐ€!

 

๊ทธ๋ฆฌ๊ณ  input์— name, ์—ฌ๊ธฐ์—์„œ๋Š” username๊ณผ password ๊ธฐ์–ตํ•ด์ฃผ๊ณ  view ์ž‘์—… ๋งˆ๋ฌด๋ฆฌํ•˜์ž!

 

 

3. view์˜ ๋กœ๊ทธ์ธ ์ž‘์—… ๋งˆ๋ฌด๋ฆฌํ•˜๊ธฐ

 

user์•ฑ์˜ views.py์— ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค์ž

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

        return HttpResponse("๋กœ๊ทธ์ธ ์„ฑ๊ณต!")
    elif request.method == 'GET':
        return render(request, 'user/signin.html')

 

user ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ํ™•์ธํ•˜๊ณ 

์žˆ์œผ๋ฉด ๋ถˆ๋Ÿฌ์˜ค๊ณ  ์—†์œผ๋ฉด ๋‹ค์‹œ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ์ž!

# user/views.py
def sign_in_view(request):
    if request.method == 'POST':
        username = request.POST.get('username', None)
        password = request.POST.get('password', None)

        me = UserModel.objects.get(username=username)  # ์‚ฌ์šฉ์ž ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
        # ์™ผ์ชฝ username์€ UserModel ์•ˆ์— ์žˆ๋˜๊ฒƒ
        # ์˜ค๋ฅธ์ชฝ username์€ ๋„ฃ์–ด์ค€ ๊ฒƒ
        
        if me.password == password:  # ์ €์žฅ๋œ ์‚ฌ์šฉ์ž์˜ ํŒจ์Šค์›Œ๋“œ์™€ ์ž…๋ ฅ๋ฐ›์€ ํŒจ์Šค์›Œ๋“œ ๋น„๊ต
            request.session['user'] = me.username  # ์„ธ์…˜์— ์‚ฌ์šฉ์ž ์ด๋ฆ„ ์ €์žฅ
            return HttpResponse("๋กœ๊ทธ์ธ ์„ฑ๊ณต!")
        else: # ๋กœ๊ทธ์ธ์ด ์‹คํŒจํ•˜๋ฉด ๋‹ค์‹œ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ
            return redirect('/sign-in')
    elif request.method == 'GET':
        return render(request, 'user/signin.html')

 

๋กœ๊ทธ์ธ ํ™”๋ฉด์—์„œ ๋กœ๊ทธ์ธํ•˜๋ฉด 

์š”๋ ‡๊ฒŒ ์ž˜ ๋œฌ๋‹ค!

 

์™€์šฐ ์•„์ฃผ ํœ˜๋ชฐ์•„ ์น˜๋Š”๊ตฌ๋งŒ ์ž˜ ์ •๋ฆฌํ•ด์•ผ์ง€

 

728x90

๋Œ“๊ธ€