어떤 방법으로 rendering 을 할것인가? 정해야한다.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app', # 템플릿 폴더 인식을 위해 추가한 값
]
위 2번에서 언급했던 렌더링방법을 알아보자.
첫번째 방법
def test_method(request):
template = loader.get_template("index.html")
context = {}
return HttpResponse(template.render(context,request))
def test_method(request):
context = {}
return render(request,'login.html', context)
참고로 context는 template에 넘겨줄 추가 내역들 삽입
하는 변수다.
메인페이지와 로그인페이지를 만들어보자.
파일경로 : app/views.py
def main_page(request):
# HTML 파일에 넘겨줄 데이터 정의
now = datetime.now()
# HTML 파일에 넘겨줄 추가 내역들 삽입하는 곳
context = {
"now":now
}
# request에 대해 main.html로 context데이터를 넘겨준다.
return render(request, 'main_page.html', context)
파일경로 : app/urls.py
# 사용할 메서드 목록을 url과 연결(라우팅)
urlpatterns = [
path('', views.main_page, name='main_page'),
]
파일경로 : app/templates/main_page.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>메인 페이지</title>
</head>
<body>
<p>안녕하세요 메인페이지 입니다.</p>
<hr>
<p>현재시각 : {{now}}</p>
</body>
</html>
실행화면