itisjustK
코딩과 사람 사는 이야기
itisjustK
전체 방문자
오늘
어제
  • 분류 전체보기 (207)
    • 일이삼사오육칠팔구십일이삼사오육칠팔구십일이삼사오육칠.. (0)
    • Web (43)
      • html & css (9)
      • django & python (15)
      • java script (9)
    • iOS (51)
      • Swift (42)
      • SwiftUI (5)
    • CS (25)
      • 자료구조 (6)
      • 운영체제 (3)
      • 데이터베이스 (9)
      • 네트워크 (7)
    • PS (34)
      • 알고리즘 & 자료구조 (0)
    • Life (36)
    • Retrospective (15)
    • Book (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 생활코딩
  • POSTECH
  • CS
  • 점주
  • CoreData
  • 연결리스트
  • ios
  • nosql
  • 어플
  • AppleDevloperAcademy
  • SWIFT
  • SwiftUI
  • mongodb
  • 독립서점
  • 킨디
  • crud
  • 세그멘테이션
  • 개발자
  • binding
  • 생활코딩 #이고잉 #HTML #코딩 #개발자

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
itisjustK

코딩과 사람 사는 이야기

Django 2
Web/django & python

Django 2

2021. 5. 11. 17:19

자, 밑의 페이지가 오늘 만들 페이지다.

 

ABOUT 화면

 

먼저 WORD COUNT 화면을 먼저 만들어보자 (첫 화면이자 home 화면 느낌)

문장을 입력하면 글자 수를 세어주는 기능을 만들어보자. 오른 쪽은 왼쪽 페이지의 HTML 언어들이다.

 

  • form 태그 & input submit & form의 action

- form 태그

사용자의 의견이나 정보를 알기 위해 입력할 큰 틀을 만드는 데에 사용되는 HTML 태그. 폼은 입력된 데이터를 한 번에 서버로 전송.

 

-input submit

type 을 submit으로 해주면 서버로 입력한 데이터를 전송해준다.

 

-form의 action

 

 

  • textarea

사용자가 텍스트를 입력할 창 또는 란을 만드는 HTML 태그. cols와 rows는 각각 가로, 세로를 의미한다. 

name은 사용자가 입력한 텍스트 정보를 지칭하는 이름값이다.

 

 

  • ABOUT 페이지 만들기

ABOUT을 누르면 ABOUT 페이지로 넘어가고, ABOUT페이지에서도 home으로 가기를 누르면 home으로 가도록 만들어보자.

설치한 app 폴더 안에 template 폴더 생성 후 ABOUT 페이지를 html 파일로 만들었다. 

 

자, 다음은 count 한 페이지를 만들어보자. ABOUT 페이지 만든 것처럼 templates 폴더 안에 count.html 페이지를 만들면 된다.

자, 그 다음은 뭘 해야 할까? index 에서 받은 데이터를 COUNT 페이지로 넘겨주어야 한다.

그래야 COUNT 페이지에서 받은 데이터로 몇 글자인지 띄워줄 수 있기 때문이다.

views 부터 작성해보자. 이어서 url 까지 작성해보자.

 

위처럼 count.html 파일에 대한 함수를 만들어준다.
views의 함수로 끌고가게끔 url 도 작성해준다.

자, 그 다음으로 index.html 에서 textarea에 입력받은 데이터를 submit 버튼을 누르면 count.html 파일로 보내야한다. 이를 위해

form의 action을 활용한다. 

 

이 뜻은 form 안에서 submit 버튼을 누르면 url 파일의 'count' 이름이 실행된다는 뜻이다.

url 파일 안에서 count라는 이름은 views.count로 가는 루트다. (views 파일 안에 count 함수를 실행한다)

form 안에 적힌 데이터는 views의 count 함수로 가긴 했다 .. 근데 현재 views 파일의 count 함수는 그냥 count.html 파일을 띄어준다는 함수 내용밖에 없다.

데이터는 넘어왔는데 이 넘어온 데이터를 뭐라고 명명해서 이용해야할지 정해져 있지 않다.

이를 위해 views.py안에 count함수 안에 full_text라는 변수를 만들어 데이터를 담아보자.

 

 

fulltext = request.GET['fulltext']

fulltext : 담는 변수의 이름 (변수를 fulltext라는 이름으로 지정)
request.GET : 정보를 가져온다
['fulltext'] : fulltext를 가져온다는 뜻. 여기서 말하는 fulltext는 index.html에 있는 textarea의 name
즉, 사용자가 textarea에 입력한 데이터

 

	return render(request, 'count.html',{'fulltext':full_text})

['fulltext' : full_text] : full_text의 변수를 다시 'fulltext'로 명명하겠다는 뜻

최종적으로, index.html 안에 textarea (name이 fulltext) 안에 적혀진 데이터를 full_text라는 변수에 담아서 가져왔고, 이를 다시 fulltext라는 이름으로 명명하겠다는 의미이다.

 

views에서 던져준 데이터를 templates에 띄우는 방법이다. 명명한 이름으로 {{ 명명이름 }} 의 문법으로 쓴다.

확인해보자 !

 

성공-!

 

우리는 templates에서 넘어온 데이터를 views.py (기능과 관련된 파일)를 통하여 데이터를 가공하여 templates 창에 띄워주는 것을 하였다

 

마지막으로, 입력한 문장을 단어 단위로 카운트하여 나타내는 것과 등장한 단어를 카운트해주는 것을 구현해보자.

이 또한 기능과 관련있으므로, views.py 파일에서 함수를 통해 구현해내야 한다.

 

1. 몇 단어로 구성되어 있는가?

 

우선 문장을 쪼개는 방법은 split이다. 만약 '니가 알던 내가 아냐'를 split을 통하여 단어를 쪼개면 

list 형식으로 ['니가', '알던', '내가', '아냐'] 라는 식으로 컴퓨터가 정리한다.

그래서 list 의 요소를 세어주는 len 을 활용하면 단어를 카운트할 수 있다.

 

word_list = full_text.split()
return render(request, 'count.html', {'total':len(word_list)}

 

2. 단어 카운트

def count(request):
    full_text = request.GET['fulltext']

    word_list = full_text.split()

    word_dictionary = {}

    for word in word_list:
        if word in word_dictionary:
            # Increase
            word_dictionary[word] += 1
        else:
            # add to the dictionary
            word_dictionary[word] = 1

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

 

  • word_dictionary = {}

하나의 dictionary를 선언해준다. dictionary 에는 [ key 값 : value 값 ] 형식으로 대응돼서 담긴다.

 

 

  • for word in word_list :

for문을 실행할건데, word_list 라는 변수 안에 있는 split된 단어에 대해 변수 word를 하나씩 꺼내서 for문을 돌릴건데~

 

 

  • if word in word_dictionary :

만약 변수 word가 위에서 선언한 word_dictionary 안에 있으면

 

 

  • word_dictionary[word] += 1

value값에 1을 더한다.

 

 

  • else :

아니면(위에서 선언한 word_dictionary 안에 없으면) (=dictionary에 없던 key값이 처음 나온거면)

 

 

  • word_dictionary[word] = 1

value가 1로 dictionary에 담긴다.

 

 

내가 헷갈렸던 점 : 않의~ dictionary에 아무 것도 없는데 거기에 변수 word가 있는지 있는지 어떻게 알아 ~

알게된 점 : 그래. 맨 처음에는 변수 word가 dictionary에 아무 것도 없다. 아무 것도 없으면 for문에서 어떻게 하라고 했니?

else 에서 key값이 1로 dictionary에 담긴다고 했잖아

 

이제 처음으로 돌아가서 그 다음 word에 대해서 for문을 실행할 거야. 

자, 여기서 봐봐. 만약에 반복되는 단어가 나왔어. 그럼 어떻게 되겠니?

if 문에서 변수 word가 dictionary에 있으면 value값이 +1 되면서 담긴다고 했지?

 

이렇게 중복되는 단어를 카운트하면서 dictionary에 담기는 거야.

'Web > django & python' 카테고리의 다른 글

CRUD - Read  (0) 2021.05.19
Model 실습  (0) 2021.05.18
Django 3 : BLOG 만들기 (MVT, ORM, CRUD 등등)  (0) 2021.05.11
Django 1 - (2)  (0) 2021.05.06
Django 1 - (1)  (0) 2021.05.03
    'Web/django & python' 카테고리의 다른 글
    • Model 실습
    • Django 3 : BLOG 만들기 (MVT, ORM, CRUD 등등)
    • Django 1 - (2)
    • Django 1 - (1)
    itisjustK
    itisjustK

    티스토리툴바