파이썬으로 장고(Django) 공략하기: 입문 강의를 정리한 내용입니다.
게시글 등록
- Model Form을 이용해 음식점 등록 화면을 만들어보자.
- form.py에 Restaurant의 폼 클래스를 작성한다.
# third/forms.py
from django.forms import ModelForm
from . models import Restaurant
from django.utils.translation import gettext_lazy as _
class RestaurantForm(ModelForm):
class Meta:
model = Restaurant
fields = ['name', 'address']
labels = {
'name': _('이름'),
'address': _('주소'),
}
help_texts = {
'name': _('이름을 입력해주세요.'),
'address': _('주소를 입력해주세요.'),
}
error_messages = {
'name': {
'mex_length': _('이름은 30자 이하로 정해주세요.')
}
}
- 등록 폼을 생성하고 처리하는 view 메소드를 추가한다.
- view 메소드에 url을 연결한다.
# third/views.py
from . forms import RestaurantForm
from django.http import HttpResponseRedirect
def create(request):
if request.method == "POST":
form = RestaurantForm(request.POST)
if form.is_valid():
new_item = form.save()
return HttpResponseRedirect('/third/list/')
form = RestaurantForm()
return render(request, 'third/create.html', {'form': form})
# third/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('list/', views.list, name="list"),
path('create/', views.create, name="restaurant-create"),
]
- 등록화면 템플릿을 추가한다.
<!-- third/templates/third/create.html -->
{% extends 'third/base.html' %}
{% load static %}
{% block content %}
<div class="container">
<form action="{% url 'restaurant-create' %}" method="post">
{% csrf_token %}
<table>
{{ form.as_table }}
</table>
<button type="submit">등록</button>
</form>
</div>
{% endblock %}