MTV pattern Part 2.의 연장선에 있는 내용으로,
앞부분과 내용이 조금 상이할 수 있으나 전체적인 맥락은 이어진다고 보시면 됩니다.
간단하게 input 태그를 포함한 페이지를 우선 app 내의 templates에 만들어 준다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
</head>
<body>
<div style="text-align: center">
<h1>사용자의 이름을 입력해주세요</h1>
<br />
<form action="">
// 나중에 이 action에 들어갈 값은 url로 지정해 줄 것이다. (이 때
urls에서 정해주었던 name만 적어줘도 그 페이지로 이동할 수 있게 된다.)
<label for="nameInput">이름 : </label>
<input id="nameInput" name="name" />
<input type="submit" value="제출" />
// type이 submit이면 click시 action에서 정해진 대로 요청된다.
</form>
</div>
</body>
</html>
templates에 만든 html을 기반으로 view 함수를 작성한다. (이전 자료와 거의 동일)
def welcome(request):
return render(request, "index.html")
view함수를 만들었다면, project 폴더 내의 urls를 정해주자.
from myapp import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.welcome, name="welcome"),
]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
</head>
<body>
<div style="text-align: center">
<h1>반갑습니다 [여기에는 입력값이 들어갈 예정]님!</h1>
</div>
</body>
</html>
templates에 만든 html을 기반으로 view 함수를 작성한다. (이전 자료와 거의 동일)
def hello(request):
userName = request.GET['name'] # 이러한 방식으로 Input 박스의 값을 가져올 수 있다. & 그것을 userName이라는 변수에 할당
return render(request, "hello.html", {'userName' : userName})
# 딕셔너리의 형태{key : value}로 hello.html에 데이터(userName)를 전달한다.
view함수를 만들었다면, project 폴더 내의 urls를 정해주자.
from myapp import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.welcome, name="welcome"),
path('hello/', views.hello, name="hello"),
]
<form action="hello">
// 이렇게 urls에서 지정해주었던 name의 값을 넣어준다!
<label for="nameInput">이름 : </label>
<input id="nameInput" name="name" />
<input type="submit" value="제출" />
// type이 submit이면 click시 hello를 name의 속성 값으로 갖는 url로 이동한다.
// (name이라는 데이터를 가지고)
</form>
{{내용}}
<div style="text-align: center">
<h1>반갑습니다 {{userName}}님!</h1>
</div>
hello.html
에 잘 넘어간 모습을 볼 수 있다.