티스토리 뷰

아래 게시물에서 장고 모델을 설정하고 이제 사용자에게 실제로 화면을 보여주는 부분에 대해서 알아보겠습니다.


http://suspected.tistory.com/entry/Django-%EB%AA%A8%EB%8D%B8%EB%A7%81-%EC%84%A4%EC%A0%95-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0


* urls.py


- urls.py는 주소와 장고의 뷰를 연결 해 주는 역학을 합니다.


여기서 중요한 부분은 urlpatterns입니다. patterns는 두 번째 인자부터 url(패턴, 뷰)를 인자로 받습니다. 주소가 이 패턴에 걸리게 되면 해당하는 뷰를 호출 하라는 의미입니다. 패턴은 정규표현식으로 이루어져 있습니다. 패턴 뒤에 뷰 대신 다른 urls.py가 오게 되면 해당하는 urls.py에서 URL을 받아서 처리하게 됩니다.


 정규표현식

 의미 

 . 

 한 글자 

 ^ 

 시작 

 $ 

 끝 

 *  

 0번 이상 반복 

 +  

 1번 이상 반복 

 ?  

 영문, 숫자,'_' 한 글자 

 \w

 한글자의 영문, 숫자,'_' 

 \d 

 숫자 한 글자 



ex) r'^main/$' -> http://127.0.0.1:8000/main


ex) 만약 http://127.0.0.1:8000/suspect/man/ 으로 접속할 때 man에 대한 페이지가 나오고 http://127.0.0.1:8000/suspect/women/ 로 접속하면 women에 대한 정보가 나오게 하려면 정규표현식을 이용하여 인자를 만들어야 합니다. 

바로 패턴을 (?<인자명>) 로 감싸는 것입니다.


r'^suspect/(?P<suspect>\w+)/$' 와 같이 패턴을 만든다면 뷰의 suspect라는 인자에 \w+에 해당하는 값이 전달 될 것입니다. 만약 http://127.0.0.1:8000/suspect/man/ 로 접속을 한다면 man으로 전달되겠습니다. 





* 뷰 만들기


- 주소를 만들었으니, 그 주소와 연결 될 "뷰"에 대해서 알아보겠습니다. 



먼저 HttpResponse라는 객체를 사용하기 위해 django.http에 있는 HttpResponse 객체를 import 하였고, HttpResponse는 사용자가 서버에 접속 했을 때 서버에서 사용자에게 보내주는 응답을 담는 객체입니다. HttpResponse를 통해 html 소스 등을 리턴 해 주면 사용자 브라우저에 그 내용이 그대로 뜨게 됩니다.


suspect라는 뷰를 만들었습니다. 장고에서 뷰는 함수로 구현되어 있습니다. 뷰는 일반적으로 def 이름(reuqest): 의 형태로 만들어 집니다. 특별히 인자가 있는 경우는 def 뷰이름(request, 인자이름(들)): 의 형태로 만들어집니다. 


위에서 만든 뷰(suspect)를 이제 urls.py에서 urlpattern의 두 번째 인자에 넣어주면 됩니다.

ex) url(r'^suspect/', 'myapp.views.suspect') 를 정의 해주고 http://127.0.0.1/suspect 를 해주게 되면, suspect view의 html에 정의해준 'hello suspect'가 뜨게 될 것입니다.



* template 만들기



위에서 HttpResponse를 이용해서 html 코드를 직접 입력 해 줬는데, 수백~수천코드를 저렇게 입력하면 비가시적이기 때문에 장고에서는 template 라는 기능을 지원합니다.


템플릿을 사용 할 때에는 django.shortcuts에 있는 render_to_response 라는 함수를 불러와서 사용합니다. 이 함수는 템플릿을 불러오고 템플릿과 값을 엮어서 HttpResponse 객체로 리턴 해 주는 것을 대신 해주는 함수입니다.


아래의 코드를 보면 suspect.html 에서 {{ 와 }}로 묶인 사이에 title과 msg 라는 변수가 있는 것을 볼 수가 있는데, 템플릿을 렌더링 하게 되면 {{ 와 }} 사이로 묶은 변수가 값으로 변하게 되는 것입니다.

render_to_response의 두 번째 인자로 아래 vieiws.py와 같이 value를 통해 사전을 넘겨주면 사전의 키와 같은 템플릿 변수(value)가 사전의 값으로 변하게 됩니다.



[ views.py ]


[ suspect.html ]



댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함