앞으로, 요즘 업무에 쓰고 있는 Django에 관한 내용들을 올리고자 한다.
첫 순서로 생산성 관련 내용을 정리해본다.
장고는 models.py에 Database class를 관리하는데, 이를 forms.py에서 활용하는 생산성을 올려주는 기능이 있다.
요약하면, models.py에 정의한 class를 활용해 입력 html상에 form을 쉽게 만들고, 입력받은 정보를 저장하는 것까지 쉽게 만들어 준다.
from django.db import models
class Blog(models.Model):
title = models.CharField(max_length=200)
body = models.TextField()
date = models.DateTimeField(auto_now_add=True)
from django import forms
from .models import Blog
class BlogModelForm(forms.ModelForm):
class Meta:
model = Blog
fields = '__all__'
# fields = ['title', 'body']
# fields 항목에는 class 항목 중 원하는 것들만 list 형태로 묶을 수 있다.
path('modelformcreate/', views.modelformcreate, name='modelformcreate'),
이제 views.py에서 이를 활용해보자. Method가 get일 때나 post일 때로 나누어, 입력창을 받는 화면과 내용을 저장하는 것을 구현한다. 아래 html 코드를 보면 이해가 쉬울 것이다.
from .forms import BlogModelForm
def modelformcreate(request):
if request.method == 'POST':
form = BlogModelForm(request.POST)
if form.is_valid():
form.save()
return redirect('home')
else: # 'GET'요청일 때
form = BlogModelForm()
return render(request, 'form_create.html', {'form': form})
<form action="{% url 'modelformcreate' %}" method="POST">
{% csrf_token %}
<table>
{{ form.as_table }}
</table>
<input type="submit" value="글 작성하기">
</form>