Views
config 폴더의 'urls.py' : 유저가 특정 url로 접근했을 때, 장고가 해야할 행동에 대해 적혀있다.
각 App 폴더마다 있는 'views.py'는 직접 import해야 사용할 수 있다. 그래서 꼭 이름이 views.py일 필요는 없다.
이를 직접 import하는 방법은 두가지다.
①urls.py에 적어주기
views.py에 함수 작성
# views.py
from django.http import HttpResponse
def say_hello(request):
return HttpResponse('Hello!')
-> urls.py에 path 적어주기
# urls.py
from room.views import say_hello
urlpatterns = [path("rooms",say_hello)] # path("유저가 이동할 url",url로 이동시 실행될 코드나 함수)
②url을 분리된 파일로 옮기기(모든 App 폴더에 개별적인 urls.py를 갖게 됨, config 폴더의 urls.py는 이 모든 파일을 하나로 합치는 역할)
config폴더의 urls.py에 ...rooms/1, ...rooms/1/edit 등 rooms/... 으로 가는 모든 경로를 포함하기 위해서 'from django.urls import include'를 해주어야한다.
그리고 rooms App 폴더 안의 urls.py를 찾아가라고 경로를 설정한다.
rooms 폴더의 urls.py에 실행될 함수를 적어준다.
URL에서 변수 받기
path("<받을 변수의 타입: 변수를 부를 이름>", 변수를 받아 실행될 함수)
예)
이를 실행하려면, url에 '...rooms/'뒤에 정수가 와야한다.
'room_id'를 받아 함수를 실행시킨다.
Render: 템플릿을 렌더링하는 법
def 함수명(request):
정보 가져오기
return render(request,"템플릿 이름", {가져올 데이터})
django는 App 폴더 내에서 템플릿을 찾음. App 폴더 안에 templates폴더를 만들고, '템플릿 이름.html' 생성한다.
html 안에서 파이썬을 사용하려면 {% ... %}를 사용한다.
html안에서도 models.py에 접근 가능하다. 'room.amenities.all'처럼 ()가 필요없다.
pk가 없을 경우 DoesNotExist 오류가 뜨면 '404 not found'가 뜨게함. not_fount = True를 데이터로 넘겨줌.
django의 템플릿 시스템으로는 다이나믹한 웹사이트를 만들기 어렵다. 그래서 django는 백엔드에서만, 프론트에서는 React.js를 이용할 것이다.
위의 내용은 알아두기만 하자.
'노마드 코더 Airbnb 클론 코딩' 카테고리의 다른 글
노마드 코더 에어비앤비 클론 코딩 #11 Rest API - 1 (0) | 2022.11.08 |
---|---|
노마드 코더 에어비앤비 클론 코딩 #10 Django Rest Framework (1) | 2022.11.05 |
노마드 코더 에어비앤비 클론 코딩 #8 Power Admin (0) | 2022.10.21 |
노마드 코더 에어비앤비 클론 코딩 #7 ORM (0) | 2022.10.19 |
노마드 코더 에어비앤비 클론코딩 #6 Models and Admin (0) | 2022.10.17 |