일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 알고리즘
- CSS
- 알고리즘 풀이
- react
- 알고리즘 연습
- AWS
- HTML
- MAC
- API
- DRF
- 백준
- web
- Algorithm
- django widget
- django rest framework
- 파이썬 알고리즘
- Git
- 파이썬
- java
- PYTHON
- django ORM
- javascript
- 장고
- Django
- c++
- js
- form
- 알고리즘 문제
- Baekjoon
- es6
- Today
- Total
수학과의 좌충우돌 프로그래밍
[Django] 03. 단어 수 세는 프로젝트 본문
안녕하세요 강민성 입니다.
이번에는 조그만한 프로젝트를 진행하며 장고에 대해서 더 알아보도록 하겠습니다.
간단하게 글자수를 세주는 프로젝트를 해보도록 하겠습니다.
시작 하기 이전에 마찬가지로 가상환경을 만들고 그 상황에서 실습을 진행하겠습니다.
단어 수 세주는 프로젝트, wordcount
이번에도 마찬가지로 project를 만들고 그 안에 앱을 만들어야 할 것입니다.
project의 이름은 firstproject로, app 이름은 wordcount 라는 이름으로 만들어 주겠습니다.
다음과 같이 디렉토리들이 만들어진 것을 확인 할 수 있을 겁니다.
이제 app 을 프로젝트에 등록해주고,
앱 안에 templates 라는 디렉토리를 만들고 그 안에 html 파일들을 담아줍니다.
다음으로는 view 로 넘어가서 요청이 들어왔을 때 home.html 을 띄우도록 함수를 만들어주었습니다.
render에 대해서 조금 더 알아보자면,
render는 최대 3개의 인자까지 받을 수 있습니다.
첫번째로 request, 두번째로 html 파일과 같은 템플릿, 마지막으로 dictionary 형 인자입니다.
dictionary 형 인자는 파이썬 변수를 html 파일로 넘길 때 사용하는데 조금 이따 다뤄보도록 하겠습니다.
다음으로는 url 을 설정해주겠습니다.
저번 시간에 설명했던 것과 동일하니 넘어가도록 하겠습니다.
서버를 실행시키고 들어가면 정상적으로 나오는 걸 확인할 수 있습니다.
여기까지 저번 시간에 한 내용을 복습하였습니다.
이제 기능을 추가해보도록 하겠습니다.
먼저 html 파일부터 수정을 하면,
다른 경로로 넘어갈 수 있는 링크를 하나 만들고
사용자로 부터 입력을 받을 수 있는 form을 만들어 주었습니다.
form은 action 이라는 속성으로 어디에다가 값을 넘겨줄 지 결정을 하게 됩니다.
또한 ABOUT 으로 다른 링크로 넘겨줄껀데 아직 다른 링크에 대한 html 파일을 생성하지 않았으므로
경로는 비워두도록 하겠습니다.
html 에 대한 내용은 자세히 다루지 않겠습니다.
이제 about 경로를 통해 띄워질 about.html 을 만들고 그에 해당되는 함수, url 을 연결시켜보겠습니다.
이제 각 링크를 연결시켜야 하는데 그러기 위해서는 알아야하는 개념이 하나 있습니다.
바로 템플렛 언어입니다.
아래 주소를 참고하면, 어렵지 않게 이해하실 수 있을 겁니다.
템플렛 언어 링크
다음으로 할 작업은 사용자가 입력을 하면 단어 수를 세서
그 결과를 화면에 출력하는 과정을 배워보도록 하겠습니다.
결과를 출력할 result.html , 이에 해당하는 함수, url 을 만들어주겠습니다.
그 다음으로는 다시 home.html 로 돌아가서
데이터를 넘겨주는 작업을 마져 해야 합니다.
form의 action에 탬플렛 태그를 이용해서 연결을 해줍니다.
결과를 result.html 로 넘겨줄 것이기 때문에 다음과 같이 됩니다.
이제 가져온 정보를 불러와야 하는데 이는 views 에서 처리해줍니다.
그리고 처리한 변수들은 result.html 에서 보여질 것입니다.
이 부분은 설명할 내용이 많아서 결과부터 확인하고 한 줄씩 풀어보도록 하겠습니다.
위쪽 이미지, views.py 부터 보도록 하겠습니다.
(10번째 줄)
값을 받아오는 방식은
request.GET['받아올 이름']
다음과 같이 받아오게 되는데
현재 상황에서 textarea의 name이 fulltext 이므로 이름 자리에 fulltext가 들어갑니다.
이를 통해 받아온 값을 full 에 대입하면 full 에는 사용자가 입력한 문장 전체가 담기게 됩니다.
(11번째 줄)
이제 이를 띄어쓰기 기준으로 나눠주기 위해 파이썬 메소드인 split() 를 사용합니다.
그 결과, words 변수에는 각 단어들로 이루어진 리스트가 저장됩니다.
(12번째 줄)
빈 딕셔너리를 만든 후 이 안에 key 값으로는 단어를, value 값으로는 단어의 횟수를 저장하게 됩니다.
이미 딕셔너리에 있는 단어라면 1를 더해주고, 없으면 1로 추가해주는 방식으로 각 단어의 개수를 세게 됩니다.
render 함수의 3번째 인자 dictionary 형으로 파이썬 변수들을 html 파일로 넘겨줍니다.
value 값이 파이썬 변수, key 값이 html에서 사용할 변수가 됩니다.
마지막으로 이 변수들을 html 파일에 적절히 적용하면 우리가 원하는 페이지를 만드실 수 있습니다.
마무리
django를 알아보기 위한 포스팅이기 때문에 html 같은 경우도 최소한만,
css 는 아예 사용하지 않았습니다.
만약 제대로된 페이지를 만들고자 하시면 css도 공부하여 적용해보면
더 그럴 듯한 페이지를 만드실 수 있을 겁니다.
'웹프로그래밍 > Django' 카테고리의 다른 글
[Django] 05. queryset 과 method (6) | 2019.02.24 |
---|---|
[Django] 04. model 과 admin (6) | 2019.02.14 |
[Django] 템플릿 언어에 대해 알아보자. (1) | 2019.02.14 |
[Django] 02. Django 시작, Hello World 출력 (5) | 2019.02.13 |
[Django] 01. 기본환경셋팅, 가상환경 만들기 (9) | 2019.02.13 |