django 002 | wordcount app
순서 리마인드
실습
이전 실습으로부터 이어서 진행
- 가상환경 켜기
source myvenv/Scripts/activate
- wordcount app 추가
python manage.py startapp wordcount
- app 추가하면 settings 의 installed app 에도 추가
'wordcount.apps.WordcountConfig',
- about.html 추가 => views.py 에 about 함수 만들어주고 => urls.py path 에 views를 이어주는 경로 만들어줌
- home.html에서 about.html, result.html로 넘어갈 수 있는 링크 연결하기
(src 방식)
<a href="{% url 'about' %}">about으로 이동</a>
<a href="{% url 'result' %}">result로 이동</a>
(+) {% url '링크name'%} => url에서 설정했던 이름으로 해당 페이지로 넘어가는 링크 만등러줌
(+) {{변수}}
view 파일에서 지정한 변수를 html에서 소환
(+) {% 파이썬 문법 %}
html에서 파이썬 문법 사용
- home.html에서 글자 입력 받을 form을 만들기
<form action="{% url result %}">
<textarea name = "fulltext" cols="40" rows="10"></textarea>
<input type="submit" value="계산하기">
</form>
=> home.html에서 textarea를 생성해 긴 문장을 입력받은 후 밑에 "계산하기"라고 적혀있는 제출 버튼이 있는데 이를 누르면 폼에 지정된 액션에 의해 result.html로 창이 이동하게 된다. 이때 textarea의 이름은 fulltext라고 지정해주었다.
- home.html이 result.html에게 넘겨주어야 할 변수(fulltext)가 추가되었으므로 views.py 수정해주러 가기!
(+) remind :
def result(request):
userName = request.GET['name']
# 변수이름 = requser.GET['가져올친구이름']
# 위의 코드는 home에서 form에 입력했던 name이라는 이름의 친구를 데려온다
return render(request, "result.html",{"userName" : userName}) #키 : 값
# result.html이라는 창에 userName 으로 받아온 name 친구를 "userName"이라는 친구로 다시 또 설정해서 데려온다 => 그렇게 되면 result 창에서는 views에서 정해준 친구의 별명을 {{views에서의 최종 별명}} 이렇게 받아와서 result에서 드러내준다
result.html 창
=> <h1>반갑습니다 {{userName}}님~</h1>
def result(request):
text=request.GET['fulltext']
return render(request, "result.html",{ "total" : text})
=> 이렇게 하면 home.html에서 textarea에 글을 쓰면 result.html이 total이라는 변수로 전달된 text(본래는 home.html의 'fulltext')가 그대로 result.html에 고스란히 나온다
- 여기서 우리는 전달해줄 text뿐만 아니라 단어의 수를 세서 result.html에 띄워주고 싶은 것이므로 이를 위해 home,html에서 전달받은 fulltext를 추가적으로 손봐줘야 한다
def result(request):
text=request.GET['fulltext'] #home에서 fulltext라는 name의 친구도 가져온다
words=text.split() #위에서 받아온 fulltext(text)를 쪼개준다
word_dic={} #이 친구를 추가 처음엔 빈 사전으로 정의
for x in words:
if x in word_dic :
word_dic[x]+=1
else :
word_dic[x]=1
return render(request, "result.html",{ "total" : text, 'dic':word_dic.items()})
#키(result에 가져다 줄 최종 별명) : 값(위의 GET에서 받아온 별명)로 result.html에 dic으로 전달해준다.
(+) items() :
딕셔너리 자료구조를 리스트의 자료구조로 변환해주는 기능
- result.html에는 받은 dic을 키(단어) : value(갯수)로 보이게 해주기 - 꼭 {{endfor}} 써서 for 끝내줘야 한다
<div style="text-align: center;">
<body>
<h2>wordcount 결과는 아래와 같습니다</h2>
{{total}}<br><br>
{% for word, num in dic %} <!--아까 dic에서 키:값 으로 받은 친구를 word num으로 받아주고-->
{{word}} : {{num}} <br>
<!--키:값으로 나와보이게 해줘-->
{% endfor %}
<a href="{% url 'home' %}">홈으로 돌아가기</a>
</body>
- 결과창
Author And Source
이 문제에 관하여(django 002 | wordcount app), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@myway00/django-002-wordcount-app저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)