namespace(이름공간)
- 이름공간은 객체를 구분할 수 있는 범위를 나타내는 말로 일반적으로 하나의 이름 공간에서는 하나의 이름이 단 하나의 객체만을 가리키게 된다.
- 변수명, 함수명을 겹치지 않게 정의하는 것이 프로그래밍에서 굉장히 중요
- django 는 다음과 같은 방법으로 이름이 겹치는 문제를 해결한다.
- 서로 다름 app의 같은 이름을 가진 url name은 이름공간을 설정해서 구분한다.
- templates, static 등에 대해 django는 정해진 경로 하나로 모아서 본다. 따라서, 중간에 임의로 폴더를 하나 만들어서 이름공간을 설정해줘야 한다.
URL namespace
- 서로 다른 앱에서 동일한 URL 이름을 사용하는 경우?
urls.py에 "app_name" attribute 값을 작성한다!!

app_name 을 작성해주면, 앱간 동일한 url을 가지더라도 구분이 가능해진다.

url 작성시 위와 같이 해당 url 이 포함되는 app_name 을 명시해준다!!
Template namespace
- django는 기본적으로 app_name/templates/ 경로에 있는 templates 파일들만 찾을 수 있으며, INSTALLED_APPS 에 작성했던 app 순서대로 template를 검색 후 렌더링한다.
- 따라서, 폴더구조를 추가해주지 않으면 가장 위에 작성된 app이 우선순위를 가지게 되어 해당 app의 템플릿만이 표시될 수 있음
- 이를 해결하기 위해, 각 app 의 templates 폴더 구조를 app_name/templates/app_name/ 의 형태로 변경해 임의로 이름공간 생성한다. 이 때, 경로작성방법도 변경되니 유의하자.

movies 앱 하에 존재하는 templates 폴더 내에 또 다시 movies 디렉토리를 생성한 후, 여기에 템플릿들을 넣어준다.

경로는 위와 같이 설정해준다.
댓글