Views.py 작성하기
- Django 웹 프로그램은 함수 호출 기반으로 구조화 됨
- views.py 내에 작성하는 모든 프로그램은 함수로 만들기
- views.py 내에 작성하는 모든 함수에는 매개변수로
request
를 항상 넣어줘야 함 - views.py 내의 함수 1개당 웹 페이지 1개라고 인지
request
: 클라이언트의 요청을 받아오기. 요청 정보가 들어있음
- HttpResponse 이용하기
- 각 app의 views.py 파일에
from django.http import HttpResponse
추가하기 - HttpResponse를 return하여 웹페이지 보여줌
from django.shortcuts import render
# HttpResponse 추가하기
from django.http import HttpResponse
# 페이지 호출할 함수 만들기
def getIndex1(request):
msg = "<b>firstapp/urls.py : index1 페이지 입니다.</b>"
return HttpResponse(msg)
- html 파일 만들어서 불러오기
- render 함수를 이용하여 html 파일을 불러와서 웹페이지 보여줌
- 딕셔너리 타입으로 값을 넘겨줄 수도 있음
- html 파일의 위치는
app/templates/app
폴더 안에 저장하기- 주소를 불러올 때는 templates 밑부터 불러오면 됨
- 폴더 이름을 바꾸고자 한다면 settings.py에 TEMPLATES 부분 수정
from django.shortcuts import render
# 넘겨줄 값이 없을 때
def index1(request):
return render(request,
"firstapp/index.html",
{})
# 넘겨줄 값이 있을 때
def getTemplate1(request):
mem_name = "홍길동"
mem_add = "부산 수영구"
return render(request,
# html 파일 위치 지정
"firstapp/template01.html",
# 값을 넘겨줄 때는 딕셔너리 형태로 넘기기
{"mem_name" : mem_name,
"mem_add" : mem_add})
urls.py 작성하기
- url을 정의한다고 해서 패턴(pattern) 정의라고 함
- url 하나당, views의 함수 한 개를 호출할 수 있도록 매핑
- config의 urls만 사용하기
config/urls.py
에app/views.py
를 연결해서 사용- 여러 개의 app들을 불러올 경우 as를 이용해서 이름을 다르게 지정함
# config/urls.py 파일
from django.contrib import admin
# 각 app의 views.py 불러오기
from firstapp import views as views1
from secondapp import views as views2
urlpatterns = [
# url 지정해서 호출하기
# - firstapp의 views에 있는 함수 호출
# - http://127.0.0.1:8000/index1/
path('index1/', views1.getIndex1),
# - secondapp의 views에 있는 함수 호출
# - http://127.0.0.1:8000/index2/
path('index2/', views2.getIndex2),
# 기존에 있던 url
path('admin/', admin.site.urls),
]
- 각 app의 urls.py 사용하기
- 최초 생성 시에는 각 app에 urls.py 파일이 없기 때문에 config의 urls.py 파일을 복사해서 사용
- Django는 config/urls.py를 통해서 웹페이지를 띄우기 때문에 각 app의 urls.py를 config의 urls.py에 연결해야함
- 각 app의 urls.py 작성하기
# config/urls.py에 있던 admin 삭제
# from django.contrib import admin
from django.urls import path
# firstapp 폴더 하위에 있는 view.py 파일 읽어들이기
# 점(.)은 현재 위치를 의미함
from . import views
urlpatterns = [
# http://127.0.0.1:8000/first/ 뒤에 붙을 url 이름 입력
# - http://127.0.0.1:8000/first/template1/
path('template1/', views.getTemplate1),
# - http://127.0.0.1:8000/first/index1/
path('index1/', views.getIndex1),
# - http://127.0.0.1:8000/first/index.html/
path('index.html/', views.index),
# - http://127.0.0.1:8000/first/index/
path('index/', views.index),
# - http://127.0.0.1:8000/first/
path('', views.index),
# 기존에 있던 url 은 삭제
# path('admin/', admin.site.urls),
]
- config의 urls.py 작성하기
from django.contrib import admin
# include 함수 추가하기
from django.urls import path, include
urlpatterns = [
### include 함수를 이용해 각 app의 urls와 연결하기
# - http://127.0.0.1:8000/first/
path('first/', include('firstapp.urls')),
# - http://127.0.0.1:8000/second/
path('second/', include('secondapp.urls')),
# 기존에 있던 url
path('admin/', admin.site.urls),
]
HTML 파일 작성하기
app/templates/app
폴더 하위에 html 파일 생성- html 파일을 만드는 작업은 웹페이지를 만드는 작업과 동일하다고 생각하면 됨
- 기본 html 템플릿 불러오는 방법
- html 파일 생성 후 VS-Code 오른쪽 하단에
Django HTML
을 클릭해서HTML
로 변경 - html 파일 내에서
html
입력 후html:5
선택하면 기본 템플릿 자동 완성됨 - python을 이용해서 데이터 출력하려면 다시
Django HTML
로 바꿔주기
- html 파일 생성 후 VS-Code 오른쪽 하단에
- head 영역 : css 또는 javascript 등의 코드 정의
- body 영역 : 웹브라우저에 보여지는 html 코드 정의(css 또는 javascript 등의 코드도 정의 가능)
- html 코드 작성 예시
<!DOCTYPE html>
<!-- kr 기반이라 lang="en" 빼도 됨 -->
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>페이지 제목 작성</title>
</head>
<body>
<h3>FirstApp</h3>
<p>
<a href="/second/">[SecondApp으로 바로가기]</a>
</p>
<h3>FirstApp</h3>
<p>
여기는 FirstApp 페이지입니다.
</p>
</body>
</html>