수학과의 좌충우돌 프로그래밍

[Django] 03. 단어 수 세는 프로젝트 본문

웹프로그래밍/Django

[Django] 03. 단어 수 세는 프로젝트

ssung.k 2019. 2. 13. 21:53

안녕하세요 강민성 입니다.


이번에는 조그만한 프로젝트를 진행하며 장고에 대해서 더 알아보도록 하겠습니다.


간단하게 글자수를 세주는 프로젝트를 해보도록 하겠습니다.


시작 하기 이전에 마찬가지로 가상환경을 만들고 그 상황에서 실습을 진행하겠습니다.


https://ssungkang.tistory.com/entry/Django-01-%EA%B8%B0%EB%B3%B8%ED%99%98%EA%B2%BD%EC%85%8B%ED%8C%85-%EA%B0%80%EC%83%81%ED%99%98%EA%B2%BD-%EB%A7%8C%EB%93%A4%EA%B8%B0




단어 수 세주는 프로젝트, 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도 공부하여 적용해보면


더 그럴 듯한 페이지를 만드실 수 있을 겁니다.




Comments