Wordcount, Git ๊ต์ก ๋ด์ฉ ํ๊ธฐ (๊ณผ์ )
- template ์ธ์ด
- html ์์ ํ์ด์ฌ ๋ณ์/๋ฌธ๋ฒ ์ฐ๊ณ ์ถ์ ๋ ์ฌ์ฉ
- template ๋ณ์ : ํ์ด์ฌ ๋ณ์๋ฅผ html ํ๋ฉด์ ์ถ๋ ฅ {{python_variable}}
- template ํํฐ : ํ
ํ๋ฆฟ ๋ณ์์ ์ถ๊ฐ์ ์ธ ์์ฑ ๋ฐ ๊ธฐ๋ฅ ์ ๊ณต {{python_variable | filter}}
ex) {{ value| length }} -> value์ ๋ฌธ์์ด ๊ธธ์ด ๋ฐํ
ex) {{ value| lower }} -> value๋ฅผ ์๋ฌธ์๋ก ์ถ๋ ฅ - template ํ๊ทธ : html ์์์ ํ์ด์ฌ ๋ฌธ๋ฒ ์ฌ์ฉ, url ์์ฑ ๋ฑ์ ๊ธฐ๋ฅ ์ ๊ณต {% tag %} … {% endtag %}
ex) {% for student in class %}
{{ student }}
{% endfor %}
- Github ๋ฐฐํฌ
- Code ์ ์ฅ ๊ธฐ๋ฅ
- Undo ๊ธฐ๋ฅ
- ํ์ ๊ธฐ๋ฅ
- Web Hosting ๊ธฐ๋ฅ
- Github ์ฌ์ฉ๋ฒ
- echo “# firstproject” >> README.md : readme.md ๋ง๋ค๊ณ , #firstproject ์์ฑ
- git init : ํ์ฌ ๋๋ ํ ๋ฆฌ๋ฅผ ์๋ก์ด git ์ ์ฅ์๋ก ์ด๊ธฐํ
- git add : ์ ์ฅํ ํ์ผ ์ ํ ->staging area๋ก ์ฌ๋ฆผ
- git commit –m “message” : ์ฃผ์์ฒ๋ผ message ์ ์ฅ
- git branch –M main : master branch์ ์ด๋ฆ์ main์ผ๋ก ๋ณ๊ฒฝ -> ์๋ก์ด ๋ถ๊ธฐ์ ์์ฑ
- git remote add origin repository์ฃผ์ : repository ์ฃผ์๋ฅผ origin์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ์ฐ๊ฒฐ
- git push origin main : main์ ๋ด์ฉ์ origin์ ์ ๋ก๋
์ค์ต) ๋จ์ด ๊ฐ์ ์ธ๊ธฐ ์น
์ผ์ชฝ home.html
์ ์
๋ ฅ ์นธ์ ํตํด ๋ฌธ์์ด์ ์ ์ถํ๋ฉด ํด๋น ๋ฌธ์์ด์ ๋์ด์ฐ๊ธฐ ๋จ์๋ก ๋๋์ด ์ด ๋จ์ด์ ๊ฐ์์ ๊ฐ ๋จ์ด๊ฐ ์ฐ์ฌ์ง ํ์๋ฅผ ๊ณ์ฐํด ์ค๋ฅธ์ชฝ์ result.html
์ ๋ณด์ฌ์ง๋๋ก ํ๋ ์ค์ต์ ์งํํ๋ค.
์ ์ค์ต์ ์ฝ๋ ์์ฑ ์์๋ ๋ค์๊ณผ ๊ฐ๋ค.
- App ์์ฑํ๊ธฐ
- ํฐ๋ฏธ๋์์
python manage.py startapp wordCount
๋ก App ์์ฑ counter>counter>settings.py
์ INSTALLED_APPS ๋ฆฌ์คํธ์ 'wordCount.apps.WordCountConfig' ์ถ๊ฐ
- ํฐ๋ฏธ๋์์
- home.html - Template ์์ฑํ๊ธฐ
- wordCount ํด๋ ์๋ templates ํด๋ ์์ฑ
- templates ํด๋ ์๋
home.html
ํ์ผ ์์ฑ ํ ์ฝ๋ ์์ฑ -
<div style="text-align: center"> <h1>WordCount ํ์ด์ง์ ๋๋ค.</h1> <br> <h3>์ฌ๊ธฐ์ ๋ฌธ์ฅ์ ์ ๋ ฅํด ์ฃผ์ธ์.</h3> <form action=''> <textarea name="sentence" cols='60' rows='30'></textarea> <br> <br> <input type="submit" value='์ ์ถ'> </form> </div>
- Home - View ์์ฑํ๊ธฐ
counter>wordCount>views.py์home.html
ํ์ด์ง๋ฅผ renderํด์ฃผ๋ home ํจ์ ์์ฑ-
def home(request): return render(request, "home.html")
- Home - URL ์ฐ๊ฒฐํ๊ธฐ
counter>counter>urls.py
์ views๋ฅผ importํ ํ urlpatterns ๋ฆฌ์คํธ์views.py
์ home ํจ์์ ์ฐ๊ฒฐ๋๋ path ์ถ๊ฐ-
from django.contrib import admin from django.urls import path from wordCount import views as wc # urlpatterns = [ path('admin/', admin.site.urls), path('', wc.home, name='wc'), # ]
- result.html - Template ์์ฑํ๊ธฐ
- templates ํด๋ ์๋
result.html
ํ์ผ ์์ฑ ํ ์ฝ๋ ์์ฑ veiws.py
์์ ์ ๋ฌ๋ฐ์ ์ธ์ {{fulltext}}, {{count}}, {{wordDict}}-
<div style="text-align: center"> <h2>์ ๋ ฅํ ํ ์คํธ ์ ๋ฌธ</h2> <div> {{fulltext}} </div> <h3>๋น์ ์ด ์ ๋ ฅํ ํ ์คํธ๋ {{count}}๊ฐ์ ๋จ์ด๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.</h3> <div> {% for word, totalCount in wordDict %} {{word}}: {{totalCount}} <br> {% endfor %} </div> </div>
- templates ํด๋ ์๋
- Result - View ์์ฑํ๊ธฐ
counter>wordCount>views.py
์result.html
ํ์ด์ง๋ฅผ renderํด์ฃผ๋ result ํจ์ ์์ฑwelcome.html
๋ก๋ถํฐ ์ ๋ ฅ ๋ฌธ์์ด์ ๊ฐ์ ธ์ ์ ์ฒด ๋ฌธ์์ด, ์ด ๋จ์ด ์, ๋จ์ด์ ๊ทธ ๋ฑ์ฅ ํ์๊ฐ ์ ์ฅ๋ dictionary๋ฅผ ๊ฐ๊ฐ 'fulltext', 'count', 'wordDict'๋ผ๋ ์ด๋ฆ์ผ๋กresult.html
render ์ ์ธ์ ์ ๋ฌ-
def result(request): sentence = request.GET['sentence'] wordList = sentence.split() wordDict={} for word in wordList: if word in wordDict: wordDict[word] += 1 else: wordDict[word] = 1 return render(request, "result.html", {'fulltext':sentence, 'count':len(wordList), 'wordDict':wordDict.items})
- Result - URL ์ฐ๊ฒฐํ๊ธฐ
counter>counter>urls.py
์ urlpatterns ๋ฆฌ์คํธ์views.py
์ result ํจ์์ ์ฐ๊ฒฐ๋๋ path ์์ฑ-
urlpatterns = [ path('admin/', admin.site.urls), path('', wc.home, name='wc'), path('result/', wc.result, name="result"), # ]
- home.html ์์
home.html
์์ input ๊ฐ(๋ฌธ์์ด)์ด ์ ์ถ๋๋ฉด 'result' url์ ํตํดresult.html
๋ก ์ ๋ฌ๋ ์ ์๋๋ก formํ๊ทธ์ action ์์ฑ์ 'result'์ผ๋ก ์ง์ -
<form action='result'> <textarea name="sentence" cols='60' rows='30'></textarea> <br> <br> <input type="submit" value='์ ์ถ'> </form>
์ ์ฒด ์ค์ต ์ฝ๋๋ ์๋ ๊นํ๋ธ์์ ํ์ธํ ์ ์๋ค.
https://github.com/J1Yun/likelion/tree/main/3.%20Django/wordCounter
Github repository ์์ฑ ๋ฐ ์ ๋ก๋
๋์ Github ๊ณ์ ์ ๋ฉ์ฌ ๊ด๋ จ ์ฝ๋๋ฅผ ์ ์ฅํ๋ ๊ณต๊ฐ์ธ likelion repository๋ฅผ ๋ง๋ค๊ณ , git ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํด์ ๊ด๋ จ ์ฝ๋๋ฅผ ๋ชจ๋ ์ ๋ก๋ ํ์๋ค. ์ด ๊ฒ์๊ธ์ ํฌํจํด ์์ ๊ณต์ ํ๋ ๋ชจ๋ github ์ฝ๋๋ ์ด๋ ์ ๋ก๋๋ ๊ฒ์ด๋ค. ์์ผ๋ก๋ ๋์ ๋ฉ์ฌ ํ๋์ ์ด repository์ ๊พธ์คํ ๊ธฐ๋กํด ๋์ ์์ ์ด๋ค!๐