Django form
HTML Form
Form์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ ํฐ ํ์ ๋ง๋๋๋ฐ ์ฌ์ฉ๋๋ค. ์ ๋ ฅ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋ฒ์ ์๋ฒ๋ก ์ ์กํ๊ณ , ์ ์กํ ๋ฐ์ดํฐ๋ ์น ์๋ฒ๊ฐ ์ฒ๋ฆฌํด ๊ฒฐ๊ณผ์ ๋ฐ๋ฅธ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ค๋ค.

action: form ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ URL์ ์ง์ ํ๋ค.enctype: ํ์ผ์ ๋๊ธธ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ค.method: form์ ์๋ฒ๋ก ์ ์กํ๋ http ๋ฐฉ์์ ์ง์ ํ๋ค. (GET/POST)name: form์ ์๋ณํ ์ด๋ฆ ์ง์ target: action์์ ์ง์ ํ ์คํฌ๋ฆฝํธ ํ์ผ์ด ํ์ฌ๋ ๋ค๋ฅธ ์์น์์ ์ด๋ฆฌ๋๋ก ํ๋ค.accept-charset: form ์ ์ก์ ์ฌ์ฉํ ๋ฌธ์ ์ธ์ฝ๋ฉ ์ง์
Django Form

์ฅ๊ณ ์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ค ํ๊ฐ์ง ์ด๋ค. Model ํด๋์ค์ ์ ์ฌํ๊ฒ Form ํด๋์ค๋ฅผ ์ ์ํ๋ค.
Form ํด๋์ค๋ Django Form ๊ด๋ฆฌ ์์คํ
์ ํต์ฌ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ์ญํ ์ ํ๋ค.
์ค๋ช
form.is_valid()
ํผ์ ์ ๋ ฅ๊ฐ์ด ์ฌ๋ฐ๋ฅธ์ง ํ์ธ
form.is_bound
์ฌ์ฉ์ ์ ๋ ฅ๊ฐ์ด ์๋์ง ํ์ธ
form.data
์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ํผ ๋ฐ์ดํฐ
form.cleaned_data
๊ฒ์ฌ๋ฅผ ํต๊ณผํ ํผ ๋ฐ์ดํฐ
form.as_p()
<p></p> ํ๊ทธ๋ก ํผ ์ถ๋ ฅ
form.as_ul()
<ul></ul> ํ๊ทธ๋ก ํผ ์ถ๋ ฅ
form.as_table()
<table></table> ํ๊ทธ๋ก ํผ ์ถ๋ ฅ
์ ๋ ฅ ํผ ์์ฑ :
as_table(),as_p(),as_ul()๊ธฐ๋ณธ์ ๊ณต์ ํจ์ฑ ๊ฒ์ฆ(Validation)
๊ฒ์ฆ์ ํต๊ณผํ ๊ฐ์
dictionary type์ผ๋ก ์ ๊ณต(cleaned_data)
Form vs Model Form
Form : ์ง์ ํ๋ ์ ์, ์์ ฏ ์ค์ ์ด ํ์ํ๋ค
Model Form : ๋ชจ๋ธ๊ณผ ํ๋๋ฅผ ์ง์ ํ๋ฉด ๋ชจ๋ธํผ์ด ์๋์ผ๋ก field๋ฅผ ์์ฑํ๋ค.
class Meta๋ ํผ์ ๋ง๋ค๊ธฐ ์ํด์ ์ด๋ค ๋ชจ๋ธ์ด ์ฐ์ฌ์ผํ๋์ง ์ฅ๊ณ ์ ์๋ ค์ฃผ๋ ๊ตฌ๋ฌธ์ด๋ค.
Form Fields(๊ณต์๋ฌธ์ ๋ฐ๋ก๊ฐ๊ธฐ)
Form fields๋ HTML Form Fields๋ฅผ ํ์ด์ฌ ํด๋์คํ ํ๊ฒ์ด๋ค.
Validation ์ํจ์ฑ ๊ฒ์ฌ
๊ธฐ๋ณธ์ ์ธ ์ ํจ์ฑ ๊ฒ์ฌ๋ ๊ฐ์ ์ ๋ฌด์ด๋ค. forms.ValidationError ๋ก ์์ธ๋ฐ์ ์ ๋ฌด๋ฅผ ์ฒ๋ฆฌํ๋ค.
ํด๋น ํ๋์
clean_<fieldname>()๋ฉ์๋๋ฅผ ์ถ๊ฐํด ๊ฒ์ฆ๋ ์ ๋ ฅ๊ฐ์ ๋ฐํํ๊ฑฐ๋ ์ณ์ง ์์๊ฒฝ์ฐ ValidationError๋ฅผ ๋ฐ์์ํฌ ์ ์๋ค.
_()์ฌ๊ธฐ์_๋gettext(),gettext_lazy()์ด๋ค.https://docs.djangoproject.com/en/2.2/topics/i18n/translation/
validators๋ form๋ณด๋ค Model์ ์ ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
๊ณต์๋ฌธ์์์ ๋ ์์ธํ ์ดํด๋ณผ ์ ์๋ค.
View
ํจ์ํ๋ทฐ
FormView
Template
์ฐธ์กฐ
Last updated
Was this helpful?