Be a developer

인스타그램 따라하기 2 본문

Django

인스타그램 따라하기 2

중국고대사 2019. 3. 25. 13:47

가상환경 활성화 되어있는 상태이다.


1. app을 추가한다. 이름은 마음대로

위 사진과 같이 home 앱이 추가되었다.


2. app을 만들면 가장 먼저 settings.py에 가서 INSTALLED_APPS에 app을 추가해줘야한다.

여기에 추가하지 않았다가 url과 html파일 경로를 잘 설정해줬는데도 TemplateDoesNotExist error가 발생해서 해맸던 경험이 있다.

따라서 app을 추가하게 된다면 바로 settings.py에 가서 app을 등록해주자.


3. app을 등록했으니 서버를 실행시켰을 때 보여줄 page를 만들어야 한다. 아직은 웹 페이지에 접속했을 때 보여줄 어떠한 파일도 없다.

따라서 home.html 파일을 만들어주자.

먼저 app 폴더 안에 templates 폴더를 만들어주고, app과 같은 이름의 폴더를 생성한 후 그 안에 home.html을 만든다.

------------------------------------------------------------------------------------------------------------------------------

**TMI**

templates안에 html파일을 바로 넣지 않고, app의 이름과 같은 폴더를 만든 후 넣는 이유(안보셔도 무방합니다. 궁금하신 분들만)

경험을 바탕으로 만들어 봄.

board라는 app을 추가하고 templates에 board.html을 만든다. 

home의 templates에도 같은 이름의 board.html을 만든다.

conf의 urls.py는 다음과 같이 설정한다. url 설정은 밑에서 다시 얘기하겠음.


다음은 각각 board app과 home app의 urls.py 이다.


다음은 각각 board app과 home app의 views.py 이다.


다음은

home.html

board의 board.html

home의 board.html

이다.


서버를 실행시키고 접속한 뒤 링크를 클릭한 결과.


설명하자면 home.html에서 링크를 클릭하게 되면 url에 따라서 board의 board.html이 표시되어야 한다. 

하지만 보다시피 home의 board.html 파일이 표시되었다. 두 파일의 이름이 같기 때문이다. 

주소를 보면 url도 정확하게 찾아 들어갔으나 표시된 html 파일이 잘못된 것을 알 수 있다.

따라서 아래와 같이 app의 이름과 같은 폴더를 생성해 준 뒤 html파일을 만들어 준다.

그리고 아래와 같이 views.py 파일들의 경로를 수정해준다.


다시 서버를 실행시켜서 결과를 보게되면 

의도한 board의 board.html 파일이 표시된 것을 알 수 있다.


요약하자면

1) app의 하위 디렉토리에 templates를 만들고 그 안에 html 파일을 넣으려면, app과 같은 이름의 디렉토리를 만든 후 그 안에 넣어라

2) 그렇지 않으면 다른 app에 있는 html 파일과 이름이 같을 때, url과 a tag의 주소 설정이 제대로 되었음에도 의도하지 않은 html 파일이 표시될 수 있다.

------------------------------------------------------------------------------------------------------------------------------


4. html파일을 추가했으니 해당 파일을 볼 수 있는 주소를 등록해야 한다. conf 폴더에 있는 urls.py에 url을 추가해준다.

주석처리 된 부분은 일단 무시..


home.html에 Hello World를 입력하고 서버 실행

------------------------------------------------------------------------------------------------------------------------------

**include**

urlpatterns에 하나씩 추가하다보면 conf 폴더 안에 있는 urls.py가 복잡해지고 보기 힘들어진다.

또한 home.views 처럼 app이 추가될 때마다 import도 지속적으로 해줘야한다.

따라서 include를 사용해서 보기 쉽게 conf폴더의 urls.py에 있는 urlpatterns를 분산시킨다.

먼저 home안에 urls.py 파일을 만들어준다.(처음에 app을 만들 때는 없음)

다음 conf 폴더에 있는 urls.py에서 include 부분을 넣어준다.

마지막으로 home 폴더 안에 만든 urls.py에 위와 같은 코드를 넣어준다.


여기까지 첫 html 파일을 표시하게 되었다. 다음부터는 home.html을 인스타그램을 따라서 만들어보겠다.

'Django' 카테고리의 다른 글

인스타그램 따라하기 6  (0) 2019.04.02
인스타그램 따라하기 5  (0) 2019.03.31
인스타그램 따라하기 4  (0) 2019.03.25
인스타그램 따라하기 3  (0) 2019.03.25
인스타그램 따라하기 1  (0) 2019.03.24
Comments