Django
[Django] 10. DJANGO FORM
개발자 뭄뭄
2022. 9. 21. 00:04
반응형
1. Form에 대한 Django의 역할
- 지금까지는 HTML form과 <input> 태그를 이용해서 사용자의 데이터를 받았다.
→ 비정상적인, 악의적인 요청이 있다는 것을 항상 생각해야 한다!
→ 항상 악의적이고, 유효하지 않은 데이터를 보내는 사용자가 있음을 명심!
- Django는 Form을 이용해서 유효성 검사를 단순화하고 자동화할 수 있다!
2. Django Form class
- model class를 선언하는 것과 비슷하다.
articles/forms.py
를 생성한 후에 다음과 같이 생성한다.- 파일이름이 달라도 되고, 다른 곳에 작성해도 되나, 더 나은 유지보수의 관점 그리고 관행적으로
forms.py
파일 안에 작성하는 것을 권장
- 파일이름이 달라도 되고, 다른 곳에 작성해도 되나, 더 나은 유지보수의 관점 그리고 관행적으로
from django import forms
class ArticleForm(forms.Form):
title = forms.CharField(max_length=20)
# form 에서는 TextField가 없다! CharField
content = forms.CharField()
articles/views.py
from .forms import ArticleForm
def new(request):
form = ArticleForm()
context = {
'form':form,
}
return render(request, 'articles/new.html', context)
articles/templates/new.html
{% extends 'base.html' %}
{% block content %}
<h1>NEW</h1>
<form action="{% url 'articles:create' %}" method="POST">
{% csrf_token %}
{{ form.as_p }}
# 각 필드를 <p>태그로 감싸서 렌더링 하기 위해서 이렇게 작성한다.
<input type="submit">
</form>
<hr>
<a href="{% url 'articles:index' %}">뒤로가기</a>
{% endblock content %}
3. Widget
- Textarea를 만들기 위해서 widget을 사용한다.
articles/forms.py
from django import forms
class ArticleForm(forms.Form):
title = forms.CharField(max_length=20)
# form 에서는 TextField가 없다! CharField
content = forms.CharField(widget=forms.Textarea())
Uploaded by N2T
반응형