django 001 | MTV 방식
장고는 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
Author And Source
이 문제에 관하여(django 001 | MTV 방식), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@myway00/django-001-MTV-방식저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)