본문 바로가기
강의/Django

LikeLion Second Session - wordcount, bootstarp - 3

by 왕큰새 2020. 7. 21.
728x90

2장에서 우리는 ,

127.0.0.1:8000/about  이런식으로 우리의 about.html 을 확인할 수 있었다.

 

이제, 우리가 만든 navbar 의 about 메뉴를 누르면, about.html 로 이동하도록 만들자.

 

 

base.html

"{%url 'about'%}" 의 의미는 , 우리가 urls.py 만든 path의 이름을 about, home 이라고 지정해줬었다.

그 path로 이동 하라는 의미이다. 저걸 누르면 왜 about.html 로 넘어가는지 모르겠다면, 

html을 공부하고 오자.

 

서버를 켜서, 메뉴바를 눌러보며 이동하는지 확인하자.

 

그리고 우리는 입력한 단어를 세주는 페이지를 하나 더 만들것이다. 

count.html로 파일을 만들고 views.py 에서 함수를 만들고 urls.py로 연결해주자. 

 

urls.py 에서 도메인은 count/ , 이름은 count 라고 지어주면 된다.

 

이제는 알아서 해보자!

 

이런식으로 만들어 주자

 

 

 

 

 

home.html

전에 home.html 작성 할때 

form action 부분 form aciton 으로 잘못 적었음!!!!!!!!!!!!!!!!!!!

form action 으로 수정 !!!!!!!!!!

 

 

우리가 입력한 문장이 count.html 로 넘어가야 하기 때문에 이런식으로 적어주자.

 

그리고 우리가 작성한 문장을 데이터로써 views.py에 넘겨받기 위해, textarea 의 이름을 지어주자.

 

home.html

이렇게 적어주고 , 우리가 처리할 데이터가 생겼으니 views.py로 가서 처리해주자.

 

 

views.py

request.GET 은 우리가 html에서 form 으로 받은 데이터를 받아 쓰겠다는 의미이다.

 

full_text 라는 변수에 그 값을 저장한 의미!

 

render의 마지막 부분에 {'text' : full_text} 를 추가했다.

 

urls.py 에서 했던 path의 이름을 정해준 느낌과 흡사 하게 , 데이터를 출력하기 위해서 우리가 이름을 정해준 것이다.

 

count.html

{{ }} 중괄호 두개는, 우리가 데이터를 출력하기 위해서 사용하는 문법이다.

 

이제 확인 해 보자.

 

이렇게 나온다면 성공!

 

이제 단어 개수를 세보자.

 

 

views.py

리스트를 하나 만들고, 그 리스트에 full_text에 담긴, '장고 진짜 너무 재밌다 너무'를 

split() 메소드를 이용, 띄어쓰기를 구분자로 나눈 것이다.

그럼 word_list에는 ['장고','진짜','너무','재밌다','너무']  이런식으로 저장되게 될것이고, 

len이라는 함수를 이용, 요소 개수를 세어 준 것!

 

 

home.html

화면에 나타내기 위해 html에 적어주자

잘 나온다.

 

이제 빈도수를 세보자

 

views.py

 

단어 - 빈도수 이런식으로 나타낼 것이기 때문에, 우리는 dictionary 를 사용할 것이다. 

 

for 문의 의미는, 단어가 word_list 에 있는 수 만큼 반복 하겠다는 뜻

 

if word in word_dictionry : 

       word_dictionary[word] +=1 

의 의미는 단어가 word_dictionary 의 키로 이미 있다면, 그에 대응되는 value 값을 +1 하고 저장하겠다는 뜻.

 

else 는 단어가 word_dictionary 의 키로 없다면, 그에 대응되는 value값을 1로 초기화 하고 저장하겠다는 뜻

 

html 에 우리가 정한 이름을 적절한 위치에 넣어주고 ! 확인해 보자

 

완성!