๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ชBackend/Django

Django๋กœ Pinterest ๋”ฐ๋ผ๋งŒ๋“ค๊ธฐ : ์„น์…˜ 1. Django Tutorial (14~18๊ฐ•)

#14 Model, DB ์—ฐ๋™

  • ์žฅ๊ณ ์—์„œ Model์€ ์žฅ๊ณ ๋ž‘ db๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ๊ฒƒ

python manage.py makemigraions

models.py ์— ์ ์–ด๋‘” ์ฝ”๋“œ๋ฅผ db์™€ ์—ฐ๋™์‹œํ‚ฌ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์คŒ

 

 

python manage.py migrate

⇒ DB์™€ ์—ฐ๋™

 

db.sqlite3

 

์ด๊ฒŒ db

์—ฌ๊ธฐ์— ๋ชจ๋“  ์ •๋ณด ์ €์žฅ๋จ

** migrations ์•ˆ์— ์žˆ๋Š” migration ํŒŒ์ผ ์ž„์˜๋Œ€๋กœ ์ง€์šฐ์ง€ ๋ง๊ธฐ.!!

 

 


 

#15 HTTP ํ”„๋กœํ† ์ฝœ GET, POST

 

์„œ๋ฒ„์™€ ํ†ต์‹ ์„ ํ•  ๋•Œ ์„œ๋ฒ„๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ์ถ”๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ๋„ฃ์–ด์ฃผ๋Š” ๋ฐฉ์‹

GET, POST๊ฐ€ ์žˆ์Œ

 

GET

์ฃผ๋กœ ์กฐํšŒ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•

์ฃผ์†Œ ์•ˆ์— ์ถ”๊ฐ€์ ์ธ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋„ฃ์–ด์„œ ๋ณด๋ƒ„

 

POST

์„œ๋ฒ„ ์•ˆ์— ์ •๋ณด๋ฅผ ์ƒˆ๋กœ ๋„ฃ๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ๋•Œ

๋ณด๋‚ผ ์ •๋ณด๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—

BODY์— ๋”ฐ๋กœ ์ •๋ณด๋ฅผ ๋„ฃ์–ด์„œ ๋ณด๋ƒ„

http์ƒํƒœ๋กœ ํ†ต์‹  ์ค‘์— ๋Š์–ด์„œ ๋ณด๋ฉด ์•”ํ˜ธํ™” ์•ˆ๋œ ์ •๋ณด๋ฅผ ๊ทธ๋Œ€๋กœ ๋ณผ ์ˆ˜ ์žˆ์Œ

https ๋กœ ์•”ํ˜ธํ™” ํ•„์š”

 

 


 

 

 

#16 GET, POST ์‹ค์Šต

 

post

post๋ฅผ ์“ฐ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ฝ”๋“œ๋‚ด์— form์„ ๋งŒ๋“ค์–ด์ฃผ์–ด์•ผํ•จ

์ „์†กํ•  ๋ฐ์ดํ„ฐ๋“ค์ด form์•ˆ์— ๋‹ค ๋“ค์–ด๊ฐ€๊ฒŒ ๋จ

{% csrf_token %}

์–˜๋ฅผ ํ•ญ์ƒ ์ ์–ด์ฃผ์–ด์•ผ POST ์ž‘๋™!

views.py ๋„ ์ˆ˜์ •ํ•ด์ฃผ๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ ๋™์ž‘

 

 


 

 

#17 POST ํ†ต์‹ ์„ ํ†ตํ•œ DB ๋ฐ์ดํ„ฐ ์ €์žฅ ์‹ค์Šต

 

if request.method=="POST":
        temp=request.POST.get("hello_world_input")

        new_hello_world = HelloWorld()
        new_hello_world.text=temp
        new_hello_world.save()

 

post์ธ ๊ฒฝ์šฐ request์—์„œ input ๋ฐ›์•„์˜ค๊ณ , HelloWorld ๋ถˆ๋Ÿฌ์™€์„œ .text์— ๊ฐ’ ๋„ฃ์–ด์ค€ ๋’ค ์ €์žฅ

์ž…๋ ฅ์œผ๋กœ ๋„ฃ์€ text๊ฐ€ db์— ์ €์žฅ๋จ & ํ™”๋ฉด์— ์ถœ๋ ฅ

 

{{hello_world_output.text}}

 

์ด๋•Œ, ๊ฐ์ฒด์˜ text๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด๋ผ ๊ทธ๋ƒฅ text์•„๋‹ˆ๊ณ  ๊ฐ์ฒด๋ช….text ํ•ด์คŒ

 

 

 


 

#18 DB ์ •๋ณด ์ ‘๊ทผ ๋ฐ ์žฅ๊ณ  ํ…œํ”Œ๋ฆฟ ๋‚ด for loop

 

db์— ์ €์žฅ๊นŒ์ง€ ํ–ˆ์œผ๋‹ˆ ์ด ์ €์žฅ๋œ ์ •๋ณด ๋ถˆ๋Ÿฌ์™€์„œ ํ™”๋ฉด์— displayํ•˜๊ธฐ

hello_world_list=HelloWorld.objects.all()
        return render(request,'accountapp/hello_world.html', context={'hello_world_list':hello_world_list})

.all()๋กœ ๋ชจ๋“  ์ •๋ณด ๋ถˆ๋Ÿฌ์™”๊ณ  returnํ•  ๋•Œ ๋„˜๊ฒจ์คŒ

 

{% if hello_world_list %}\\
            {% for hello_world in hello_world_list %}
            <h4>
                {{hello_world.text}}
            </h4>
            {% endfor %}

for๋ฌธ ๋Œ๋ฉด์„œ ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ์˜ text ๊ฐ’์„ h4๋กœ ํ•˜๋‚˜์”ฉ display

 

์ž…๋ ฅ ์—†์ด post๋งŒ ํ•  ๋•Œ ์ด์ „ ์ž…๋ ฅ๊ฐ’์ด ๊ณ„์† ๋“ค์–ด๊ฐ€์ง€ ์•Š๊ณ  ์žฌ์—ฐ๊ฒฐ๋งŒ ๋˜๋„๋ก

return HttpResponseRedirect(reverse('accountapp:hello_world'))

views.py์—์„œ return ์œ„์™€ ๊ฐ™์ด ์ˆ˜์ •

 

 

์‹ค์Šต ๊ฒฐ๊ณผ

 

 


 

๋ฐ•ํ™์„๋‹˜์˜ ์ธํ”„๋Ÿฐ ๊ฐ•์˜๋ฅผ ์ˆ˜๊ฐ•ํ•˜๋ฉฐ ์ •๋ฆฌํ•ด๋ณด๋Š” ๊ธ€์ž…๋‹ˆ๋‹ค.

https://www.inflearn.com/course/%EC%9E%A5%EA%B3%A0-%ED%95%80%ED%84%B0%EB%A0%88%EC%8A%A4%ED%8A%B8

 

์ž‘์ •ํ•˜๊ณ  ์žฅ๊ณ ! Django๋กœ Pinterest ๋”ฐ๋ผ๋งŒ๋“ค๊ธฐ : ๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ๋ฐฐํฌ๊นŒ์ง€ ๊ฐ•์˜ - ์ธํ”„๋Ÿฐ

Python์˜ ๋Œ€ํ‘œ ์›น ํ”„๋ ˆ์ž„์›Œํฌ django๋ฅผ ์ด์šฉํ•ด Pinterest ํŠน์œ ์˜ ์นด๋“œํ˜• ๋ ˆ์ด์•„์›ƒ ๋””์ž์ธ์„ ๋ณธ๋”ด ์›น์„œ๋น„์Šค ๊ตฌํ˜„ํ•ด๋ด…๋‹ˆ๋‹ค., django, docker ์‹ค์ „ ๊ฐœ๋ฐœ์„ ํ†ตํ•ด ํ•œ ๋‹จ๊ณ„ ๋†’์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜