Todo 앱 Create 만들기.

3541 단어 djangotododjango

이제 상세보기 페이지도 생겼으니, crate 기능을 만들어보자!

작업 순서는 view -> forms.py -> url -> template 이다.

#views.py

class TodoCreateView(CreateView):
    model = TodoList
    form_class = TodoCreateForm
    template_name = 'todo/todo_create.html'
    success_url = reverse_lazy('todo:index')

역시나 간편하게 장고의 제네릭뷰의 createview를 이용할것이다.

createview에서 fields = ['name',...] 등으로 설정하면 따로 forms.py를 만들지 않아도 되지만, forms.py를 이용해보기로 했다.

#forms.py

from django import forms
from .models import TodoList

class TodoCreateForm(forms.ModelForm):
    class Meta:
        model = TodoList
        fields = ('name', 'description', 'date_deadline', 'image', 'file')

forms.py도 장고의 modelform을 이용해보았다.
modelform을 이용하면, model에 맞춰서 간단하게 form을 제공해준다.

#urls.py

    path('create/', TodoCreateView.as_view(), name='create'),

url을 등록해주고,

#todo_create.html

<div class="text-center">
 <form method="post", action="", enctype="multipart/form-data">
   {% csrf_token %}
   {{ form.as_p }}
   <input type="submit" value="작성">
</form>
</div>

위와같이 작성해준다, 이때, form 태그안의 enctye를 설정해주지 않으면 정상적으로 작동하는것 같지만 이미지와 파일이 업로드되지 않으니 주의하자!!
나는 이거 몰라서 한시간을 찾아해맸음..

그리고, listview,indexview 등의 작성 버튼에 {% url 'todo:create' %} 를 연결해서 버튼을 활성화시켜준다.

버튼을 눌러보면,

허접하지만 폼이 등장하고, 입력하면 작동한다.

좋은 웹페이지 즐겨찾기