django 001 | MTV 방식

12841 단어 djangodjango

장고는 MTV 방식


template : 사용자가 실제로 보는 부분
model : 데이터 (db)
view : 데이터를 처리하는 곳

실습

(1) 가상환경 만들기

python -m venv myvenv

(2) 가상환경 실행

source myvenv/Scripts/activate

(3) 장고 설치

pip install django

(4) project 만들기

django-admin startapp myproject

(5) 프로젝트로 이동

cd myproject

(6) 앱을 만들기
app : django 프로젝트를 이루는 작은 단위
'
(네이버가 프로젝트고 app은 그안의 기능들)

python manage.py startapp firstapp

=> 프로젝트 안에 app폴더가 생김

(7) 앱을 추가해주면 setting.py에 app을 추가해줘야함 (나는 app이름을 app1이라고 지어서 'app1.apps.App1Config',을 추가해줌
(앱이름.apps.앱이름(근데 첫글자를 대문자로)+Config)

===> 웹사이트 구동 순서

=>우리는 템플릿 만들고 => views에서 처리할 함수 만들어주고

(8) 따라서 사용자에게 보여줄 탬플릿을 만들어야함 => 어디에? app안에

  • 만든 app에 오른쪽 마우스 클릭해서 뉴폴더를 만들고 이름을 templates라고 지어준다

(9) templates 폴더 안에 html을 만들어준다

(10) html을 꾸며준다

<!DOCTYPE html>
<html lang="kor">
<head>
    <meta charset="UTF-8">

    <title>Document</title>
</head>
<body>
    <div style="text-align: center;">
        <h1>사용자의 이름을 입력하시오</h1><br>
        <form action="">
            <label for="nameInput">이름</label>
            <input id="nameInput" name="name">
            <input type="submit" value="이름">
        </form>
    </div>
</body>
</html>

=>form 기능 : https://velog.io/@myway00/HTML-Form

(11) 템플릿을 만들어줬으면 이 명령을 처리해줄 함수를 views.py에 입력

from django.shortcuts import render
def home(request):
    return render(request, "home.html")

(12) 원래 모델(db)부분도 처리해줘야 하나, 지금은 처리할 부분이 없어 넘어가고 이번엔 url로 연결해줘야 하니깐 urls.py 수정!

  • url과 views 연결방법
    Function views
    1. Add an import: from my_app import views
    2. Add a URL to urlpatterns: path('', views.home, name='home')
    Class-based views
    1. Add an import: from other_app.views import Home
    2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
    Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns: path('blog/', include('blog.urls')

(12-1 app의 views를 import)

from app1 import views
  • 맨위에 추가

(12-2 path 추가)

 path('',views.home, name="home"), #name을 씀으로써 url을 저 name으로 대체가능 - 나중에 html에서 action="url name" 적어주면 그것 누르면 이동 가능

(13) 이번에는 이름을 입력하면 이동할 result.html => views => url연결 순서로 진행

(13-1)
result.html

<div style="text-align: center;">

    <h1>반갑습니다 {{userName}}님~</h1>

</div>

(+) 파이썬 언어등을 사용해야 할 때 {{}} 탬플릿 언어!

(13-2) views

def result(request):
    userName =  request.GET['name']
    return render(request, "result.html",{"userName" : userName}) #키 : 값

=> template에서 'name'받아서
=> result.html에 "userName" 이라는 키 값으로 userName 값을 전달하라~ => 이를 {} 안에 넣어서 render.. 전달..해주기

(13-3) urls

path('result/', views.result, name="result"),

(13-4) url까지 잘 지정했으면 html form=action"url name"입력
이 form은 제출 눌러지면 result.html로 가야하니깐 액션으로 result 지정해주면 됨

결과창

(1) 초기화면 home.html

(1-1) name= 매드몬스터

(2) 제출 누른 후 result.html (name값 잘 전달됨)

(+)
url 주소 변화
(1) http://127.0.0.1:8000/
(2) http://127.0.0.1:8000/result/?name=%EB%A7%A4%EB%93%9C%EB%AA%AC%EC%8A%A4%ED%84%B0

좋은 웹페이지 즐겨찾기