HTML ํผ(HTML Form) ์ด๋? ๐ซง
1. HTML ํผ ์ ์
- ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ๊ณ ์๋ฒ๋ก ์ ๋ฌํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์น ํ์ด์ง์ ๊ธฐ๋ณธ ๊ตฌ์กฐ์ด๋ค
- django ์์ ํผ์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ ๋ฐ์ดํฐ ๊ตํ์ ํต์ฌ ์ญํ ์ ํจ
2. ๊ธฐ๋ณธ ๊ตฌ์กฐ
<form method="GET" action="/search/">
<input type="text" name="query" placeholder="๊ฒ์์ด ์
๋ ฅ">
<button type="submit">๊ฒ์</button>
</form>
์ฃผ์ ์์ฑ
- `method` : ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก ์ ๋ฌํ๋ HTTP ๋ฉ์๋(`GET` ๋๋ `POST`)
- `GET` : URL์ ๋ฐ์ดํฐ๋ฅผ ์ฟผ๋ฆฌ์คํธ๋ง์ผ๋ก ํฌํจํ์ฌ ์ ๋ฌํจ
- `POST` : ๋ฐ์ดํฐ๋ฅผ ์์ฒญ ๋ณธ๋ฌธ(body)์ ํฌํจํ์ฌ ์ ๋ฌํ๋ค
- `action` : ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ URL(๊ธฐ๋ณธ ๊ฐ์ ํ์ฌ ํ์ด์ง์)
Django ์์ ์ฐ๋
- HTML ํ
ํ๋ฆฟ
- ์์ ๊ฐ์ ํผ์ ์์ฑํ์ฌ ์ฌ์ฉ์๋ก๋ถํฐ ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋๋ค
- ๋ทฐ ์ฒ๋ฆฌ(views.py)
def search(request):
query = request.GET.get('query', '') # ์ฟผ๋ฆฌ์คํธ๋ง์์ 'query' ๊ฐ์ ๊ฐ์ ธ์ด
return HttpResponse(f"๊ฒ์์ด: {query}")
์ฟผ๋ฆฌ์คํธ๋ง(Query String) ์ด๋? ๐ฃ๏ธ
1. ์ฟผ๋ฆฌ์คํธ๋ง ์ ์
- ์ฟผ๋ฆฌ์คํธ๋ง์ URL์ ๋์ ๋ถ๋ ํค-๊ฐ ์์ ์งํฉ์ผ๋ก, ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ์ ์ค ํ๋์ด๋ค
- ํ์: `?key1-value1&key2=value2`
ํน์ง
- ์ฃผ๋ก GET ๋ฐฉ์์์ ์ฌ์ฉํจ
- URL์ ์ผ๋ถ๋ก ํฌํจ์ด ๋์ด์์ด ๊ฐ์์ฑ์ด ๋์
- ๋ฐ์ดํฐ ํฌ๊ธฐ์ ์ ํ์ด ์์ผ๋ฏ๋ก ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๋ฐ์๋ ๋ถ์ ํฉํจ
์์
- URL
/search/?query=django&page=2
- ๋ทฐ ์ฒ๋ฆฌ
def search(request):
query = request.GET.get('query', '') # 'django'
page = request.GET.get('page', 1) # 2
return HttpResponse(f"Query: {query}, Page: {page}")
GET ๋ฐฉ์์ด๋? ๐ฉ๐ป๐พ
1. GET ๋ฐฉ์ ์ ์
- `GET` ์ HTTP ์ ์์ฒญ ๋ฉ์๋ ์ค ํ๋๋ก, ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด ์ฌ์ฉ๋๋ค
- ํผ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ๋ ์ฟผ๋ฆฌ์คํธ๋ง์ ํตํด ๋ฐ์ดํฐ๊ฐ ์ ์ก๋๋ค
ํน์ง
- ๋ฐ์ดํฐ๋ฅผ URL์ ๋ ธ์ถ์ํด
- ๋ธ๋ผ์ฐ์ ์์ ๋ถ๋งํฌ๊ฐ ๊ฐ๋ฅํ๋ค
- ์บ์ฑ์ด ๊ฐ๋ฅํจ
- ๋ฐ์ดํฐ์ ํฌ๊ธฐ ์ ํ์ด ์๋ค
- ๋ณดํต ์ต๋ 2KB ~ 8KB
- ๋ณด์์ ์ทจ์ฝํจ
- ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ค์ผํ ๋์๋ ์ ํฉํ์ง ์์
Django ์์ GET ๋ฐฉ์ ํผ ์ฒ๋ฆฌ
- HTML ํผ
<form method="GET" action="/search/">
<input type="text" name="query" placeholder="๊ฒ์์ด">
<input type="number" name="page" value="1">
<button type="submit">๊ฒ์</button>
</form>
- ๋ทฐ ์ฒ๋ฆฌ
def search(request):
query = request.GET.get('query', '๊ธฐ๋ณธ ๊ฒ์์ด') # 'query' ๊ฐ
page = request.GET.get('page', 1) # ํ์ด์ง ๊ฐ, ๊ธฐ๋ณธ๊ฐ์ 1
return HttpResponse(f"๊ฒ์์ด: {query}, ํ์ด์ง: {page}")
- ์ ์ก๋ URL ์์
/search/?query=python&page=2
2. GET ๋ฐฉ์๊ณผ POST ๋ฐฉ์ ๋น๊ต
ํน์ง | GET | POST |
๋ฐ์ดํฐ ์์น | URL(์ฟผ๋ฆฌ์คํธ๋ง) | HTTP ์์ฒญ ๋ณธ๋ฌธ |
๋ฐ์ดํฐ ํฌ๊ธฐ | ์ ํ ์์(๋ณดํต 2KB ~ 8KB) | ์ ํ ์์ |
๋ณด์์ฑ | ๋ฎ์(๋ฐ์ดํฐ๊ฐ URL์ ๋ ธ์ถ) | ์๋์ ์ผ๋ก ๋์ |
์บ์ฑ | ๊ฐ๋ฅ | ๋ถ๊ฐ๋ฅ |
์ฌ์ฉ ์์ | ๊ฒ์, ํ์ด์ง ๋ค๋น๊ฒ์ด์ ๋ฑ••• | ๋ก๊ทธ์ธ, ๋ฐ์ดํฐ ๋ฑ๋ก/์์ ๋ฑ••• |
์ ๋ฆฌ ๐งน
- HTML ํผ์ ์ฌ์ฉ์ ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก ์ ๋ฌํ๋ ๊ธฐ๋ณธ ๋๊ตฌ์ด๋ค
- ์ฟผ๋ฆฌ์คํธ๋ง์ GET ์์ฒญ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ๋ URL์ ์ถ๊ฐ๋๋ ๋ฐ์ดํฐ ํํ ๋ฐฉ์์ด๋ค
- GET ๋ฐฉ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์์ฒญ์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ฉฐ, URL์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ฏ๋ก ๊ฐ๋ณ๊ณ ๋จ์ํ ์์ ์ ์ ํฉํ๋ค
์ ๊ทธ๋ ๊ตฌ๋~~
'[๋ด๋ฐฐ์บ ] ๋ณธ ์บ ํ (24.11.25 ~ 25.03.31) ๐๐ปโโ๏ธ > Django ๐ชข' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[250107] ํธ๋ ์ผ๋ง ์ฌ๋์(Trailing Slash) ๋? (0) | 2025.01.07 |
---|---|
[250103] Django Template Language ๋? (1) | 2025.01.04 |
[241231] Classํ View์ ํจ์ํ View์ ์ฐจ์ด์ (0) | 2024.12.31 |
[241230] MVC ํจํด๊ณผ MTV ํจํด (2) | 2024.12.30 |