728x90
model 형식에 맞는 입력공간 만들기.
html로 form 태그를 만드는 것에는 한계가 있다!
-> 장고의 기능을 활용!
form 만드는 것은 모델 만드는 것과 비슷하다.
form.py
models.py -> db와 매핑
form.py -> html <form>과 매핑
(1) 모델 기반 입력공간 만들기 : from django import forms.ModelForm
- Meta 클래스? ?????
1) blog 앱 안에 form.py (일반적으로는 forms.py) 파일 생성
# Blog class를 기반으로 만들 것이기 때문에 blog 안에 form.py를 만들어준 것! models.py 여기 있자너
from django import forms
from .models import Blog
# 모델기반이 아니면 forms.Form
class BlogPost(forms.ModelForm):
class Meta:
model = Blog
fields = ['title', 'body']
2) blog 앱 안에 있는 urls.py
path('newblog/', views.blogpost, name="newblog"),
추가
3) blog 앱 안에 있는 views.py
from .form import BlogPost
당연히 import 해줘야겠지
def blogpost(request):
# 1. 입력된 내용 처리 : POST
if request.method == 'POST':
form = BlogPost(request.POST)
if form.is_valid():
post = form.save(commit=False)
post.pub_date = timezone.now() # 나머지는 form.py에서 써줬지~
post.save()
return redirect('home')
# 2. 빈 페이지 띄워주는 기능 : GET
else:
form = BlogPost()
return render(request, 'new.html', {'form': form})
** timezone 은
from django.utils import timezone
이거~
4) new.html
{% extends 'base.html' %} <!-- 모든 태그에 비해서 우선순위가 높은 extends 태그! -->
{% block contents %}
<br>
<div class="container">
<form method="POST"> <!-- action이 필요없다 -->
{% csrf_token %}
<table>
{{form.as_table}}
</table>
<br>
<input class="btn btn-dark" type="submit" value="제출하기">
</form>
</div>
{% endblock %}
========================================
(2) 임의의 입력공간 만들기 : from django import forms.Form
1) form.py
# Blog class를 기반으로 만들 것이기 때문에 blog 안에 form.py를 만들어준 것! models.py 여기 있자너
from django import forms
from .models import Blog
# 모델기반이 아니면 forms.Form
class BlogPost(forms.Form):
email = forms.EmailField()
files = forms.FileField()
url = forms.URLField()
words = forms.CharField(max_length=200)
max_number = forms.ChoiceField(choices=[('1', 'one'), ('2', 'two'), ('3', 'three')]) # one은 1로 간주하겠다.
이렇게만 바꿔주고 바로 서버돌리면 됨~!
==============================================
form.py는
form.py를 만들고 쓰고싶은 파일에 import 해서 써주면 되는 파일임
==============================================
Field 종류
'Development > Django(멋쟁이사자처럼 7기 운영진)' 카테고리의 다른 글
[멋사7기] 7주차 - 1, 2. 소셜 로그인 이론, 실습 (Google) (0) | 2019.02.20 |
---|---|
[멋사7기] 6.5주차 - heroku에 배포하기 (0) | 2019.02.18 |
[멋사7기] 5.5주차 - Faker (0) | 2019.02.10 |
[멋사7기] 5주차 - 3, 4. Pagination 이론, 실습 (0) | 2019.02.10 |
[멋사7기] 5주차 - 1, 2. 로그인, 회원가입 이론, 실습 (0) | 2019.02.09 |