๋ณธ ํ”„๋กœ์ ํŠธ๋Š” ํŒจ์บ  ๊ฐ•์˜๋ฅผ ์ฐธ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

<์ด์ „ ๊ธ€>

https://silvercoding.tistory.com/13

 

[DJANGO ๊ธฐ์ดˆ] 3. Django admin, ๊ฐœ๋ฐœ ์„œ๋ฒ„ ํ™œ์šฉ

๋ณธ ํ”„๋กœ์ ํŠธ๋Š” ํŒจ์บ  ๊ฐ•์˜๋ฅผ ์ฐธ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. <์ด์ „ ๊ธ€> https://silvercoding.tistory.com/12 https://silvercoding.tistory.com/11 [DJANGO ๊ธฐ์ดˆ] ๊ฐ€์ƒํ™˜๊ฒฝ ์„ค์ • ๋ฐ ์•ฑ ์ƒ์„ฑ ํ”„๋ ˆ์ž„ ์›Œํฌ - ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ฝ”๋“œ๋ฅผ..

silvercoding.tistory.com

 

Tamplate์€ Bootstrap ์„ ์ด์šฉํ•˜์—ฌ ์ž‘์„ฑํ•ด์ค€๋‹ค. 

์ž‘์—…์„ ํ•  ๋•Œ ์ €์žฅํ•˜๋Š” ์Šต๊ด€์„ ๊ผญ ๋“ค์—ฌ์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค. ์ €์žฅ ์•ˆํ•˜๊ณ  ํŽ˜์ด์ง€ ์‹คํ–‰ํ•ด์„œ ์—๋Ÿฌ๋œฌ๊ฒƒ๋งŒ ์˜ค์ฒœ๋งŒ๋ฒˆ์ด๋‹ค.

 

Bootstrap ์ด์šฉ์„ ์œ„ํ•ด ๋‹ค์Œ ๋งํฌ์—์„œ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์˜ค๋ฉด ๋œ๋‹ค. 

https://getbootstrap.com/docs/5.0/getting-started/introduction/

 

Introduction

Get started with Bootstrap, the world’s most popular framework for building responsive, mobile-first sites, with jsDelivr and a template starter page.

getbootstrap.com

 

ํšŒ์›๊ฐ€์ž… ์ฐฝ ๋งŒ๋“ค๊ธฐ 

1. Template ์ž‘์„ฑํ•˜๊ธฐ

  •  user ํด๋” ---> templates ํด๋”  ---> register.html  

Getting started -- CSS ๋ถ€๋ถ„๊ณผ Javascript ๋ถ€๋ถ„์„ headํƒœ๊ทธ ์•ˆ์— ๋„ฃ์–ด์ค€๋‹ค. starter template ์—์„œ metaํƒœ๊ทธ๋„ ๊ฐ€์ ธ์™€ ์ค€๋‹ค. 

<html>

    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">    

        <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x" crossorigin="anonymous">
        <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-gtEjrD/SeCtmISkJkNUaaKMoLD0//ElJ19smozuHV6z3Iehds+3Ulb9Bn9Plx0x4" crossorigin="anonymous"></script>
        <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js" integrity="sha384-IQsoLXl5PILFhosVNubq5LC7Qb9DXgDA9i+tQ8Zj3iwWAwPtgFTxbJ8NT4GN1R8p" crossorigin="anonymous"></script>
        <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/js/bootstrap.min.js" integrity="sha384-Atwg2Pkwv9vp0ygtn1JAojH0nYbwNJLPhwyoVbhoPwBhjQPR5VtM2+xf0Uwh9KtT" crossorigin="anonymous"></script>
    </head>

    <body>
    </body> 

</html>

๊ทธ๋Ÿผ ์šฐ์„  ์ด๋Ÿฐ ๋ชจ์–‘์„ ๋ˆ๋‹ค. 

 

 

Forms --- Overview ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค!

<html>

    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x" crossorigin="anonymous">
        <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-gtEjrD/SeCtmISkJkNUaaKMoLD0//ElJ19smozuHV6z3Iehds+3Ulb9Bn9Plx0x4" crossorigin="anonymous"></script>
        <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js" integrity="sha384-IQsoLXl5PILFhosVNubq5LC7Qb9DXgDA9i+tQ8Zj3iwWAwPtgFTxbJ8NT4GN1R8p" crossorigin="anonymous"></script>
        <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/js/bootstrap.min.js" integrity="sha384-Atwg2Pkwv9vp0ygtn1JAojH0nYbwNJLPhwyoVbhoPwBhjQPR5VtM2+xf0Uwh9KtT" crossorigin="anonymous"></script>
    </head>

    <body>
        <div class="container">
            <div class="col-12 text-center">
                <h1>ํšŒ์›๊ฐ€์ž…</h1>
            </div>
        </div>
        <div class="row">
            <form>
                <div class="mb-3">
                    <label for="exampleInputEmail1" class="form-label">Email address</label>
                    <input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp">
                    <div id="emailHelp" class="form-text">We'll never share your email with anyone else.</div>
                </div>
                <div class="mb-3">
                    <label for="exampleInputPassword1" class="form-label">Password</label>
                    <input type="password" class="form-control" id="exampleInputPassword1">
                </div>
                <div class="mb-3 form-check">
                    <input type="checkbox" class="form-check-input" id="exampleCheck1">
                    <label class="form-check-label" for="exampleCheck1">Check me out</label>
                </div>
                <button type="submit" class="btn btn-primary">Submit</button>
            </form>
        </div>
    </body>

</html>

ํšŒ์›๊ฐ€์ž… ๊ธ€์”จ ๋„ฃ์–ด์ฃผ๊ณ  ๊ทธ ๋ฐ‘์— ํšŒ์›๊ฐ€์ž… form์„ ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค. 

 

ํด๋”์— ์ €์žฅ๋œ register.html ์„ ์—ด์–ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹คํ–‰์ด ๋œ๋‹ค. 

 

๋””์ž์ธ์ด ๋งˆ์Œ์— ์•ˆ๋“œ๋‹ˆ ๋ฐ”๊พธ์–ด ์ค€๋‹ค. 

- ํ•œ๊ธ€๋กœ ๋ฐ”๊พธ๊ธฐ, container ์ ์šฉ, placeholder ์ž‘์„ฑํ•ด์ฃผ๊ธฐ

<html>

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x" crossorigin="anonymous">
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-gtEjrD/SeCtmISkJkNUaaKMoLD0//ElJ19smozuHV6z3Iehds+3Ulb9Bn9Plx0x4" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js" integrity="sha384-IQsoLXl5PILFhosVNubq5LC7Qb9DXgDA9i+tQ8Zj3iwWAwPtgFTxbJ8NT4GN1R8p" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/js/bootstrap.min.js" integrity="sha384-Atwg2Pkwv9vp0ygtn1JAojH0nYbwNJLPhwyoVbhoPwBhjQPR5VtM2+xf0Uwh9KtT" crossorigin="anonymous"></script>
</head>

<body>
    <div class="container">
        <div class="row-mt5">
            <div class="col-12 text-center">
                <h1>ํšŒ์›๊ฐ€์ž…</h1>
            </div>
        </div>
        <div class="row mt-5">
            <form>
                <div class="form-group mb-3">
                    <label for="username" class="form-label">์‚ฌ์šฉ์ž ์ด๋ฆ„</label>
                    <input type="text" class="form-control" id="username" placeholder="์‚ฌ์šฉ์ž ์ด๋ฆ„">
                </div>
                <div class="form-group mb-3">
                    <label for="password" class="form-label">๋น„๋ฐ€๋ฒˆํ˜ธ</label>
                    <input type="password" class="form-control" id="password" placeholder="๋น„๋ฐ€๋ฒˆํ˜ธ">
                </div>
                <div class="form-group mb-3">
                    <label for="re-password" class="form-label">๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ</label>
                    <input type="password" class="form-control" id="re-password" placeholder="๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ">
                </div>
                <button type="submit" class="btn btn-primary">๋“ฑ๋ก</button>
            </form>
        </div>
    </div>

</body>

</html>

์›ํ•˜๋Š” ๋Œ€๋กœ ์ž‘์„ฑ์ด ์™„๋ฃŒ ๋˜์—ˆ๋‹ค. 

 

 

 

2. View ์ž‘์„ฑํ•˜๊ธฐ 

- community ---> user ---> views.py 

from django.shortcuts import render

def register(request):
    return render(request, "register.html")

register ํ•จ์ˆ˜ ์ž‘์„ฑํ•˜๊ธฐ. request๋ฅผ ๊ผญ ๊ฐ™์ด ์ „๋‹ฌํ•ด ์ฃผ์–ด์•ผ ํ•˜๊ณ , ๋ฐ˜ํ™˜ํ•˜๊ณ ์ž ํ•˜๋Š” html ํŒŒ์ผ์„ ์ž‘์„ฑํ•ด ์ค€๋‹ค.

 

- community --> urls.py 

urlpatterns = [
    ...
    path('user/', include('user.urls'))

]

urlpatterns ์•ˆ์— user ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ด์ค€๋‹ค. 

 

 

- community ---> user ---> urls.py 

user ํด๋” ์•ˆ์— urls.py๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. 

from django.urls import path
from . import views


urlpatterns = [
    path('register/', views.register)
]

views.py์˜ register ํ•จ์ˆ˜๋ฅผ import ํ•˜์—ฌ ์ „๋‹ฌํ•ด์ค€๋‹ค. ์ด๋ ‡๊ฒŒ ์ž‘์„ฑ์„ ํ•ด๋†“์œผ๋ฉด .../user/register ๊ฒฝ๋กœ๋ฅผ ์น˜๋ฉด register.html์ด ๋ Œ๋”๋ง ๋  ๊ฒƒ์ด๋‹ค. 

 

 

 

- ๊ฐœ๋ฐœ์ž ์„œ๋ฒ„ ๋“ค์–ด๊ฐ€๋ณด๊ธฐ 

ํ„ฐ๋ฏธ๋„

python manage.py runserver

์ด์ œ ์„œ๋ฒ„๋กœ ๋“ค์–ด๊ฐ€์„œ ํ™•์ธ์„ ํ•ด๋ณด์ž. 

ํ„ฐ๋ฏธ๋„์— ๋œจ๋Š” ์ฃผ์†Œ ๋’ค์— /user/register ์ž‘์„ฑ์„ ํ•ด์ค€๋‹ค. 

 

๊ทธ๋Ÿฌ๋ฉด ์ด๋ ‡๊ฒŒ ์ž˜ ์—ฐ๊ฒฐ์ด ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

 

๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์ด์ฌ ์ชฝ์œผ๋กœ ์ „๋‹ฌ 

์ฃผ์†Œ๋ฅผ ์ณ์„œ ํšŒ์›๊ฐ€์ž… ์ฐฝ์œผ๋กœ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์œผ๋‹ˆ, ์ด์ œ๋Š” POST์š”์ฒญ์„ ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„๋กœ ์ „๋‹ฌํ•ด์ฃผ๋Š” ์ž‘์—…์„ ํ•ด์•ผํ•œ๋‹ค. 

 

1. Template ์ž‘์„ฑํ•˜๊ธฐ

community ---> user ---> register.html  

 

  ...
  		 <form method="POST" , action=".">
                    {% csrf_token %}
                    <div class="form-group mb-3">
                        <label for="username" class="form-label">์‚ฌ์šฉ์ž ์ด๋ฆ„</label>
                        <input type="text" class="form-control" id="username" placeholder="์‚ฌ์šฉ์ž ์ด๋ฆ„" name="username">
                    </div>
                    <div class="form group mb-3">
                        <label for="password" class="form-label">๋น„๋ฐ€๋ฒˆํ˜ธ</label>
                        <input type="password" class="form-control" id="password" placeholder="๋น„๋ฐ€๋ฒˆํ˜ธ" name="password">
                    </div>
                    <div class="form group mb-3">
                        <label for="re-password" class="form-label">๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ</label>
                        <input type="password" class="form-control" id="re-password" placeholder="๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ" name="re-password">
                    </div>
                    <button type="submit" class="btn btn-primary">๋“ฑ๋ก</button>
                </form>
  ...

๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์ด์ฌ ์ชฝ์œผ๋กœ ์ „๋‹ฌํ•ด์ฃผ๋Š” ์ฝ”๋“œ์ด๋‹ค. POST method๋กœ ์ „๋‹ฌํ•˜๊ณ , action="."์€ ํ˜„์žฌ ์ฃผ์†Œ๋กœ ์ „๋‹ฌํ•˜๊ฒ ๋‹ค๋Š” ๋œป์ด๋‹ค.           

form ์•ˆ์— {% csrf_token %}  ์ด๊ฒƒ์„ ๊ผญ ๋„ฃ์–ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. 

 

form ์€ data ๋ฅผ ์„œ๋ฒ„์— ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ธ๋ฐ, ์•ˆ์ข‹๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋‹ค๋ฅธ ์›น์‚ฌ์ดํŠธ์—์„œ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์„ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ๋ผ๊ณ  ํ•œ๋‹ค.  ํฌ๋กœ์Šค ๋„๋ฉ”์ธ์„ ๋ง‰๊ธฐ ์œ„ํ•ด ์•”ํ˜ธํ™”๋œ ํ‚ค๋ฅผ ์ˆจ๊ฒจ๋†“๋Š”๋‹ค. ๊ทธ๋ž˜์„œ ํ‚ค๊ฐ€ ์—†์œผ๋ฉด ์ž˜๋ชป๋œ ์š”์ฒญ์œผ๋กœ ๋ฐ›์•„๋“ค์—ฌ ์š”์ฒญ์„ ๊ฑฐ์ ˆํ•˜๊ฒŒ ๋œ๋‹ค. ํ•„์ˆ˜์ ์ธ ์ฝ”๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ์จ์ฃผ๋ฉด ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค!

 

๊ทธ๋ฆฌ๊ณ  input ํƒœ๊ทธ์— name ์†์„ฑ๋„ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. ์ด name ๊ฐ’์œผ๋กœ ์ •๋ณด๊ฐ€ ์ „๋‹ฌ์ด ๋  ๊ฒƒ์ด๋‹ค.

 

 

 

 

2. View ์ž‘์„ฑํ•˜๊ธฐ 

community ---> user ---> view.py 

from django.shortcuts import render
from .models import User

def register(request):
    if request.method == 'GET':
        return render(request, "register.html")
    elif request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        re_password = request.POST['re-password']

    user = User(
                Username = username,
                password = password
            )

    user.save()

    return render(request, "register.html")

์š”์ฒญ ๋ฐฉ๋ฒ•์ด GET์ผ ๋•Œ์™€ POST ์ผ ๋•Œ๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์ž‘์„ฑํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค. 

 

 

์—ฌ๊ธฐ๊นŒ์ง€ ํ•ด์„œ silver 123456 ์œผ๋กœ ํšŒ์›๊ฐ€์ž…์„ ํ•˜๊ณ  admin์— ๋“ค์–ด๊ฐ€ ๋ณด๋‹ˆ user ์ƒ์„ฑ์ด ์ž˜ ๋˜์–ด์žˆ๋‹ค.

 

 

 

 

 

 

3. ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธํ•˜๊ธฐ 

community ---> user ---> view.py .py

from django.shortcuts import render
from .models import User

def register(request):
    if request.method == 'GET':
        return render(request, "register.html")
    elif request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        re_password = request.POST['re-password']

        res_data = {}

        if password != re_password:
            res_data['error'] = "๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค."
        else:
            user = User(
                Username = username,
                password = password
            )

            user.save()
            
        return render(request, "register.html", res_data)

res_data๋ผ๋Š” dictionary๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๊ณ  password์™€ re_password์˜ ๊ฐ’์ด ๋‹ค๋ฅด๋ฉด res_data์˜ ํ‚ค๊ฐ’์„ error, value๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ์ €์žฅํ•ด์ค€๋‹ค. ๊ทธ๋‹ค์Œ render ํ•จ์ˆ˜์— res_data๋ฅผ ์ „๋‹ฌํ•ด ์ค€๋‹ค. 

 

 

community ---> user ---> register.html  

...
	<div class="row-mt5">
            <div class="col-12 text-center">
                <h1>ํšŒ์›๊ฐ€์ž…</h1>
            </div>
        </div>
        <div class="row mt-5">
            <div class="col-12">
                {{error}}
            </div>
        </div>
...

๊ทธ๋‹ค์Œ ํšŒ์›๊ฐ€์ž… ๋ฐ‘์— ์—๋Ÿฌ ๋ฌธ์ž์—ด์„ ๊ทธ๋ ค์ค„ ๋ถ€๋ถ„์„ ํ•˜๋‚˜ ๋งŒ๋“ ๋‹ค. {{}} ์•ˆ์— res_data์˜ ํ‚ค ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค. 

register.html ์„ ๋žœ๋”๋ง์„ ํ• ๋•Œ res_data๋ผ๋Š” ๊ฐ’์„ ๋„˜๊ธฐ๋ฉด res_data์˜ ํ‚ค์™€ {{error}}๊ฐ€ ๋งคํ•‘์ด ๋œ๋‹ค.

 

 

--- ํ™•์ธํ•ด๋ณด๊ธฐ 

 

๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์น˜๋ฉด ์œ„์™€๊ฐ™์ด ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•ด ๋ณด์•˜๋‹ค. 

 

 

 

 

4. ๋ชจ๋“  ๊ฐ’์ด ์ž…๋ ฅ๋˜์ง€ ์•Š์•˜์„ ๋•Œ ์ฒ˜๋ฆฌ & ๋น„๋ฐ€๋ฒˆํ˜ธ ์•”ํ˜ธํ™” 

์œ„์—๊นŒ์ง€ ์ž‘์—…์„ ๋งˆ์ณค์„ ๋•Œ ๋ฌธ์ œ์ ์ด ์žˆ๋‹ค. 

์‚ฌ์šฉ์ž ์ด๋ฆ„, ๋น„๋ฐ€๋ฒˆํ˜ธ, ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ์„ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๊ฐ€ ๋œจ์ง€ ์•Š์œผ๋ฉฐ, 

์‚ฌ์ง„๊ณผ ๊ฐ™์ด ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๊ณต๊ฐœ๋˜๋ฏ€๋กœ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์•”ํ˜ธํ™”๊นŒ์ง€ ์ž‘์„ฑ์„ ํ•ด์ค€๋‹ค. 

 

community ---> user ---> view.py .py

from django.shortcuts import render
from .models import User
from django.contrib.auth.hashers import make_password

def register(request):
    if request.method == 'GET':
        return render(request, "register.html")
    elif request.method == 'POST':
        username = request.POST.get('username', None) ## ๊ธฐ๋ณธ ๊ฐ’ ์„ค์ •
        password = request.POST.get('password', None)
        re_password = request.POST.get('re-password', None)

        res_data = {}


        if not (username and password and re_password):
            res_data['error'] = "๋ชจ๋“  ๊ฐ’์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”."
        elif password != re_password:
            res_data['error'] = "๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค."
        else:
            user = User(
                Username = username,
                password = make_password(password)
            )

            user.save()
            
        return render(request, "register.html", res_data)

์ตœ์ข…์ ์œผ๋กœ ์ด๋ ‡๊ฒŒ ์ž‘์„ฑ ์™„๋ฃŒ. makepassword๋ฅผ importํ•˜์—ฌ password๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋น„๋ฐ€๋ฒˆํ˜ธ ์•”ํ˜ธํ™”๊ฐ€ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  request.POST์— getํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ธฐ๋ณธ ๊ฐ’์„ None์œผ๋กœ ์„ค์ •ํ•ด์ค€๋‹ค. ๊ทธ๋‹ค์Œ username, password, re_password๋ฅผ and๋กœ ์—ฐ๊ฒฐํ•ด์ฃผ์–ด ํ•˜๋‚˜๋ผ๋„ ์ž‘์„ฑ์ด ๋˜์ง€ ์•Š์œผ๋ฉด error ๋ฉ”์‹œ์ง€๊ฐ€ ๋œจ๊ฒŒ ์ž‘์„ฑํ•ด์ค€๋‹ค. 

 

 

๊ฒฐ๊ณผ ํ™•์ธ

๋ชจ๋“  ๊ฐ’์„ ์ž…๋ ฅํ•˜์ง€ ์•Š์•˜๋”๋‹ˆ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๊ฐ€ ๋œฌ๋‹ค. 

silver2๋กœ ๊ฐ€์ž…์„ ๋‹ค์‹œ ํ•ด์ฃผ์—ˆ๋”๋‹ˆ ์•”ํ˜ธํ™”๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ๋œจ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

 

--- ์—ฌ๊ธฐ์„œ model์˜ field(ex, ์‚ฌ์šฉ์ž ์ด๋ฉ”์ผ) ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ ์ ˆ์ฐจ (ํฌ์ŠคํŒ…์€ ์ƒ๋žต)

model field ์ž‘์„ฑ ---> migration ---> register.html ์ž‘์„ฑ ---> view.py ์ž‘์„ฑ 

์‚ฌ์šฉ์ž ์ด๋ฉ”์ผ field๋ฅผ ์ถ”๊ฐ€ํ•œ ๊ฒฐ๊ณผ์ด๋‹ค. 

 

 

 

์ •๋ง ๊ธด ์—ฌ์ •์ด์—ˆ๋‹ค. ๋‹ค์Œ์—๋Š” static ํŒŒ์ผ ๊ด€๋ฆฌ์™€ CDN ์— ๋Œ€ํ•˜์—ฌ ์•Œ์•„๋ณผ ์˜ˆ์ •์ด๋‹ค. 

 

+ Recent posts