티스토리 뷰

반응형

프로젝트의 urls에 url request를 설정할 경우

- urls.py는 request url을 받았을 때 어떤 뷰와 매핑 될 지를 결정해 주고, 이러한 이유로 여러 앱들에서 같은 이름의 여러한 views를 import해주어야 하는 문제가 발생한다. 또한 한 페이지에 존재하는 수많은 url 패턴들을 일일히 지정해주어야하는 문제가 발생한다.

 

각각의 app urls에서 request를 설정하는 방법

 

app 내의 urls.py에서 설정

- app 내의 urls.py을 만들어 설정해준다. views모듈을 같은 posts 패키지 내에서 import해주기 때문에 현재 디렉토리를 뜻하는 . 에서 import 해준다. 또 path에서 원래 적었던 'posts/' 가 아닌 빈 문자열로 설정해준다.

 

 

project 내의 urls.py에서 설정

  - 프로젝트의 urls.py에서 추가 설정을 해준다. path함수의 두번째 파라미터를 view 함수로 전달하는 것이 아니라 include 함수를 사용하여 posts패키지의 urls 파일을 포함시키고 있다. 이를 통해 url 설정을 앱단위로 분리해서 편리하게 개발할 수 있다.

 

 

 

 

Template 

- 앱 내에 templates 폴더를 만든 후, 그 폴더 아래에 앱 이름과 같은 폴더를 만들어야 한다. 이름이 같아야 하는 것이 포인트이다.

- render 함수의 2번째 인자에는 template이 위치한 경로를 전달해야하는데 장고는 기본적으로 templates 디렉토리를 기준으로 검색하게 된다.

 

- 그 후 프로젝트의 settings.py에서 apps를 추가해준다.

 

Django의 template 검색

- Django는 template을 검색할 때 특정 app의 template을 검색하는 것이 아니라 전체의 templates를 검색하므로 예시의 경우 원하지 않는 app의 index.html을 가져올 수 있으므로 반드시 원하는 파일을 전달하기 위해서는 앞에 template의 특정 폴더를 지정해주어야 한다. 

 

html 내에 인자 전달하기

 

- render 함수 내에 3번째 parameter로 dictionary 형태의 요소를 넣으면 해당 요소를 출력할 수 있다.

 

 key 값을  이용해 접근한다.

 

 

 

 

 

 

 

 

render함수에서 요소 접근하기

 

- dict, list, instance 어떤 형태이든 html에서는 파이썬 코드가 아니므로 .(dot)으로 접근한다.

 

html에서 Python 문법 사용하기 

- html에서는 파이썬 문법을 이해할 수 없으므로 반복문의 마무리를 ;이 아닌 endfor로 해주어야한다. 반드시 적어주어야한다. 중괄호가 두개 겹쳐있는 곳이 우리가 실제로 눈으로 볼 수 있는 곳이다. {{ }}

 

Static Files

- css, JS처럼 누가 사용하든 변하지 않을 정보를 Static Files라고 한다.

 

- template과는 다르게 나중에는 각 static 디렉토리들이 하나의 static 디렉토리로 합쳐지게 된다.

 

- static을 사용하기 위해 필요한 요소들은 위의 박스와 같다.

 

- static은 나중에 하나로 합쳐지므로 절대경로로 작성하면 안된다. 상대경로로 작성 해야한다.

 

 

 

반응형
댓글