Skip to content

Latest commit

ย 

History

History
125 lines (90 loc) ยท 6 KB

File metadata and controls

125 lines (90 loc) ยท 6 KB

App

์šฐ๋ฆฌ๋Š” ์•ž์œผ๋กœ ์„ธ์…˜๋•Œ sns๋ฅผ ์ œ์ž‘ํ•ด๋ณผ ๊ฒ๋‹ˆ๋‹ค. sns๋ฅผ ์ œ์ž‘ํ•˜๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ ์˜ˆ์ƒ๋˜๋Š” ๊ธฐ๋Šฅ๋“ค์ด ์žˆ๊ฒ ์ฃ ?

  1. ํšŒ์›๊ฐ€์ž…/๋กœ๊ทธ์ธ
  2. ๋ฉ”์ธ ํ™”๋ฉด(๋‹ค์–‘ํ•œ ๊ฒŒ์‹œ๋ฌผ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š”)
  3. ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ
  4. ์ž์‹ ์˜ ํ”ผ๋“œ(๊ฒŒ์‹œ๊ธ€) ๊ด€๋ฆฌ(์ˆ˜์ •,์‚ญ์ œ)

์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ๋“ค ํ•˜๋‚˜ํ•˜๋‚˜๊ฐ€ App์ด ๋˜์–ด ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  main ์•ฑ์€ ๋‘๋ฒˆ์งธ์˜ ๋ฉ”์ธ ํ™”๋ฉด์„ ๊ฐœ๋ฐœํ•  ์•ฑ์ด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค.

main ์•ฑ์˜ ๊ตฌ์„ฑ

  • migrations : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์ฃผ๋Š” ํŒŒ์ผ์„ ์ €์žฅํ•ด์ฃผ๋Š” ํด๋”
  • __init__.py : ๋นˆ ํŒŒ์ผ
  • admin.py : ๊ด€๋ฆฌ์ž ์‚ฌ์ดํŠธ์™€ ๊ด€๋ จ๋œ ์„ค์ •
  • apps.py : ์•ฑ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ •๋ณด
  • models.py : model์— ๋Œ€ํ•œ ์ •๋ณด
  • test.py : test case์— ๋Œ€ํ•œ ์ •๋ณด
  • views.py : ์•ฑ์— ๋Œ€ํ•œ views๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํŒŒ์ผ => ์ด๋ฒˆ ์„ธ์…˜์—์„œ ๋‹ค๋ค„๋ด…๋‹ˆ๋‹ค!

templates

  1. main ์•ฑ ์•ˆ์— templates ํด๋”๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  2. ์ƒ์„ฑํ•œ templates ํด๋” ์•ˆ์— mainํด๋” (์•ฑ ์ด๋ฆ„๊ณผ ๋™์ผํ•œ ํด๋”)๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  3. ์•ฑ์ด๋ฆ„๊ณผ ๋™์ผํ•œ ํด๋”์•ˆ์— mainpage.html๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ’ก ์•ฑ ์ด๋ฆ„๊ณผ ๋™์ผํ•œ ํด๋”๋ฅผ ๋งŒ๋“œ๋Š” ์ด์œ  ๋งŒ์•ฝ ๋‹ค๋ฅธ ์•ฑ์— ๋˜‘๊ฐ™์€ ์ด๋ฆ„์˜ ๋‹ค๋ฅธ html์ด ์žˆ๋‹ค๋ฉด ๋‹ค๋ฅธ html์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋’ค์ชฝ์— views.py์—์„œ ๋ณด๋ฉด ๋” ์ดํ•ด๊ฐ€ ์‰ฌ์šธ ๊ฒ๋‹ˆ๋‹ค. ๋’ค์ชฝ์—์„œ ๋‹ค์‹œ ์„ค๋ช…๋“œ๋ฆด๊ฒŒ์š”.

  4. mainpage.html์— ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฝ”๋“œ ํ•œ ์ค„์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

<h1>2021 Dongguk Likelion 9th SNS</h1>

mainpage.html์„ ์ž‘์„ฑํ–ˆ์ง€๋งŒ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋ฉ”์ธํ™”๋ฉด์ด ๋‚˜์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. htmlํŒŒ์ผ์„ url์„ ํ†ตํ•ด ์—ฐ๊ฒฐํ•ด์ฃผ์–ด์•ผ htmlํŒŒ์ผ์„ ๊ฐ€์ ธ์™€ ๋„์›Œ์ค๋‹ˆ๋‹ค. url์„ ํ†ตํ•ด ์—ฐ๊ฒฐํ•  ๋•Œ view๋ฅผ ๋งŒ๋“ค์–ด ๊ฒฝ๋กœ์— ํ• ๋‹นํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

View

  1. main>views.py์— ํ•จ์ˆ˜ ์„ ์–ธํ•˜๊ธฐ
from django.shortcuts import render # django.shorcutsํŒจํ‚ค์ง€์—์žˆ๋Š” render๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ

def showmain(request):
  return render(request, 'main/mainpage.html')
  
# def ํ•จ์ˆ˜์ด๋ฆ„(์ธ์ž):
#   ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ ์‹คํ–‰๋  ์ฝ”๋“œ
  

โœ๏ธ request๋Š” ํ•ญ์ƒ ์ ์–ด์ฃผ๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ด์ฃผ์„ธ์š”. request๊ฐ€ templates์˜ mainํด๋” ์•ˆ์— ์žˆ๋Š” mainpage.html์„ ์š”์ฒญํ•˜๊ณ , render๊ฐ€ templte(mainpage.html)์„ ์ „์†กํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก ์™œ main/templates/main/mainpage.html์ด ์•„๋‹ˆ๋ผ main/mainpage.html์ธ๊ฐ€์š”? settings.py์—๋Š” templates์„ค์ •์ด ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. INSTALLED_APPS์— ๋“ฑ๋กํ•œ ์•ฑ์˜ templates ํด๋”๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋ฆ„์ด ์ผ์น˜ํ•˜๋Š” ํŒŒ์ผ์„ ์ฐพ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Django ์—์„œ ์ด template ์„ ๋‹จ์ˆœํžˆ main/mainpage.html๋กœ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

๐Ÿ’ก ์•ฑ ์ด๋ฆ„๊ณผ ๋™์ผํ•œ ํด๋”๋ฅผ ๋งŒ๋“œ๋Š” ์ด์œ  ๋งŒ์•ฝ ์šฐ๋ฆฌ๊ฐ€ mainํด๋”๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๊ณ  templatesํด๋”์— ๋ฐ”๋กœ mainpage.html์„ ๋งŒ๋“ค์—ˆ์„ ๊ฒฝ์šฐ

def showmain(request):
  return render(request, 'mainpage.html')

์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•ด์•ผํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ django๋Š” INSTALLED_APPS์— ๋“ฑ๋ก๋œ ์•ฑ์˜ templates ํด๋”๋ฅผ ํƒ์ƒ‰ํ•˜๋‹ค๊ฐ€ ์ด๋ฆ„์ด ์ผ์น˜ํ•˜๋Š” ์ฒซ๋ฒˆ์งธ template ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋งŒ์•ฝ ์šฐ๋ฆฌ๊ฐ€ snsํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๋‹ค๊ฐ€ ๋งˆ์ดํŽ˜์ด์ง€ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ๊ณ , mypage์•ฑ์˜ templatesํด๋”์•ˆ์— mainpage.html์ด ์žˆ๋‹ค๋ฉด django๋Š” main์•ฑ์˜ mainpage.html์„ ๋ถˆ๋Ÿฌ์™€์•ผํ•˜๋Š” mypage mainpage.html์„ ๋ถˆ๋Ÿฌ์™€์•ผํ•˜๋Š”์ง€ ์ •ํ™•ํžˆ ์•Œ์•„๋‚ด์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ templatesํด๋” ์•ˆ์— ์•ฑ ์ด๋ฆ„๊ณผ ๋™์ผํ•œ ํด๋”๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

html ํŒŒ์ผ๋„ ์ž‘์„ฑํ–ˆ๊ณ , views.py์—์„œ html ํŒŒ์ผ์„ ๋„์›Œ์ฃผ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ url์—์„œ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ด ์–ด๋–ค ๊ฒฝ๋กœ์— ์ ‘์†ํ–ˆ์„ ๋•Œ ํ•ด๋‹น htmlํŒŒ์ผ์„ ๋„์›Œ์ค„์ง€ ์—ฐ๊ฒฐํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Url

from django.contrib import admin
from django.urls import path
from main import views # main์•ฑ์˜ viewsํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค.

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.showmain), # ์•„๋ฌด๊ฒƒ๋„ ์ž…๋ ฅ์•ˆํ•œ ๊ฒฝ๋กœ์— main์•ฑ์˜ views.py์˜ showmainํ•จ์ˆ˜๋ฅผ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
]
  1. ํ•จ์ˆ˜ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ from main import views main์•ฑ์˜ viewsํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค.

  2. ๊ฒฝ๋กœ ์ถ”๊ฐ€ํ•˜๊ธฐ path('๊ฒฝ๋กœ', ํ•ด๋‹นํ•˜๋Š” view), ์•ž์— ์ ์€ ๊ฒฝ๋กœ๋กœ ์ ‘์†ํ–ˆ์„ ๋•Œ ๋’ค์— ์ ์€ ํ•จ์ˆ˜๋ฅผ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ,์ ์–ด์ฃผ๋Š” ๊ฒƒ ์žŠ์ง€๋งˆ์„ธ์š”! path('', views.showmain) ''๋Š” ์•„๋ฌด๊ฒƒ๋„ ์ž…๋ ฅ์•ˆํ–ˆ์„ ๋•Œ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ œ์ผ ์ฒ˜์Œ ๋œจ๋Š” ํ™”๋ฉด์ด๊ฒ ์ฃ . ํ•ด๋‹น ๊ฒฝ๋กœ์ผ ๋•Œ views.showmain์€ ์œ„์—์„œ importํ•œ main์•ฑ์˜ showmainํ•จ์ˆ˜๋กœ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. showmainํ•จ์ˆ˜๋Š” ์•„๊นŒ main์•ฑ์˜ mainpage.html์„ renderํ•ด์ฃผ๋ฏ€๋กœ mainpage.html์„ ๋„์šฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•˜์—ฌ mainpage.html์„ ํ™”๋ฉด์— ๋„์šฐ๋Š”์ง€ ํ™•์ธํ•ด๋ด…์‹œ๋‹ค.

$ python manage.py runserver

html์„ ํ™”๋ฉด์— ๋„์šฐ๊ธฐ ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค! ์ปค๋ฐ‹, ํ‘ธ์‰ฌํ•ด์ค์‹œ๋‹ค.

$ git add. $ git commit -m "mainpage ๋„์šฐ๊ธฐ" $ git push origin main

์ •๋ฆฌ

  • ์•ฑ>templates>์•ฑ ํด๋”>htmlํŒŒ์ผ
  • ์•ฑ>views.py
  • ํ”„๋กœ์ ํŠธ ํŒŒ์ผ>urls.py
  1. url ์ž…๋ ฅ - urls.py์—์„œ url์— ๋งž๋Š” views์˜ ํ•จ์ˆ˜๋ฅผ ์ฐพ๋Š”๋‹ค.
  • url์ด http://127.0.0.1:8000/์ž…๋‹ˆ๋‹ค. ๊ฒจ์˜ฌ์— ์•„๋ฌด๊ฒƒ๋„ ์ž…๋ ฅํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
  • path('', views.showmain) ๊ทธ๋ ‡๋‹ค๋ฉด viewsํ•จ์ˆ˜๋“ค ์ค‘ showmain์ด๋ผ๋Š” ํ•จ์ˆ˜๋กœ ๊ฐ‘๋‹ˆ๋‹ค.
  1. views์— ํ•ด๋‹นํ•˜๋Š” ์•ฑ์œผ๋กœ ๋“ค์–ด๊ฐ€ views.py์˜ ํ•จ์ˆ˜๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • from main import views views๋Š” main์•ฑ์˜ views.py์— ์žˆ๋Š” ํ•จ์ˆ˜๊ตฐ์š”.
  • def showmain(request):
        return render(request, 'main/mainpage.html')
    
    

showmain์ด๋ผ๋Š” ํ•จ์ˆ˜๋Š” main์•ฑ์˜ templatesํด๋”์•ˆ์˜ mainํด๋”์•ˆ์˜ mainpage.html์„ ์ „์†กํ•ด์ฃผ๋Š” ํ•จ์ˆ˜๋„ค์š”.

  1. ํ•จ์ˆ˜๊ฐ€ ์—ฐ๊ฒฐํ•ด์ค€ templates์˜ html์„ ์ฐพ์•„์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
<h1>2021 Dongguk Likelion 9th SNS</h1>

์ด ๋‚ด์šฉ์ด ํ™”๋ฉด์— ๋ณด์ด๊ฒ ๋„ค์š”!