티스토리 뷰
아래 게시물에서 장고 모델을 설정하고 이제 사용자에게 실제로 화면을 보여주는 부분에 대해서 알아보겠습니다.
* 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 ]
'프로그래밍 > Python' 카테고리의 다른 글
Telegram Bot을 이용한 악성코드 분석 자동화 (0) | 2016.04.16 |
---|---|
[Python] Writing the Setup Script (0) | 2016.03.29 |
[Django] 모델링 설정, 시작하기 (0) | 2016.03.17 |
[Django] 설치부터 초기 설정까지 (0) | 2016.03.15 |
[Immunity plugin] Making shellcode asistance (0) | 2016.01.17 |
- Total
- Today
- Yesterday
- vuln
- malware
- Yara
- 악성코드
- 스피어피싱
- infostealer
- 해킹메일
- 멋쟁이사자처럼 4기
- keylogger
- Kimsuky
- CVE-2018-9375
- koodous
- Flybits
- AMSI
- Static Analysis Engine
- VirusBulletin
- cuckoo-sandbox
- MS-Office
- 비트코인
- .wll
- 출처 : Do it 안드로이드 프로그래밍
- Decoding
- us-cert
- CVE-2018-0798
- 한글악성코드
- Cisco Talos
- Servey
- Bisonal
- idapython
- 위협정보공유
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |