룰루랄라 코딩기록장

[Django]Weekely2_Wordcount1_2 본문

LikeLion/Djaongo

[Django]Weekely2_Wordcount1_2

Jeonnnng 2019. 4. 16. 15:35

Wordcount 2

view.py의 count함수 수정

  • home에서 name이 fulltext로 정의된 textarea에 작성된 데이터를 full_text라는 변수에 저장한다.

      full_text = request.GET['fulltext']
  • 문장을 한 단어씩 끊어서 word_total변수에 리스트 형태로 저장시킨다.
    aa bb cc => [aa, bb, cc]

      word_total = full_text.split()
  • dictionary형 word_dictionary변수를 생성합니다. dictionary형은 {key:value}값을 가진다.

      word_dictionary = {}
  • word_total리스트에 담겨진 단어를 하나 씩 탐색하면서 word_dictionary에 존재한다면 value값을 1씩 증가시키고, 존재하지 않다면 key값 추가 후 value값을 1로 저장한다.

      for word in word_total:
          if word in word_dictionary:
              word_dictionary[word] += 1
          else:
              word_dictionary[word] = 1
  • item()함수는 dictionary형 자료를 튜플형태로 반환해준다.(key,value)
    추가적으로 단어가 저장된 횟수 즉 value값을 내림차순으로 보여주기위해
    sort함수를 사용할 때 lambda를 이용했다.

      s_wd = sorted(word_dictionary.items(), key=lambda k: k[1], reverse=True)
  • 마지막으로 가공한 데이터를 count페이지 보내주기 위해서는 render함수의 세 번째 인자값에 dictionary형 인자값을 생성하여 넘겨주어야 한다.

  • full_text는 'fulltext', word_total은 len함수를 사용하여 나뉘어진 단어의 갯수를 'total'로, 마지막으로 s_wd에 저장된 내용을 'dictionary'라는 이름으로 count페이지로 반환해준다.

      return render(request, 'wordcount/count.html', {'fulltext': full_text, 'total': len(word_total), 'dictionary': s_wd})

  • 마지막으로 count에 view에서 받아온 데이터를 출력하는 코드를 작성해주면 된다.

  • 템플릿 변수를 사용하여 dictionary형으로 render할 때 정의했던 key값을 사용하여 사용자에게 보여주도록 한다.

  • 단어의 이름과, 단어가 사용된 빈도 수는 for문을 사용하여 출력해줘야 한다.

    결과

  • home에서 문장을 입력한 후 버튼을 클릭하게 되면 다음과 같이 단어의 총 갯수와 해당 단어가 작성된 빈도수를 보여주게된다.

'LikeLion > Djaongo' 카테고리의 다른 글

[Django]Weekely2_Wordcount  (0) 2019.04.16
[Django]Weekly1.5 MTV  (0) 2019.04.04
[Django]Weekly1-3 Hello World 실습  (0) 2019.04.04
[Django]Weekly1-2 Hello World 이론  (0) 2019.04.02
[Django]Weekly1-1 기본환경 셋팅  (0) 2019.04.02
Comments