LoginSignup
6
5

More than 5 years have passed since last update.

[Django] Generic editing viewsについて [1]

Last updated at Posted at 2015-12-26

はじめに

Generic display viewsに続いて、新規追加、編集、削除を行うGeneric editing viewsについても見てみます。

Generic editing views

今回はGeneric editing viewsについてです。

最小限で

引き続き、最小限で実装します。Generic display viewsの続きからです。

CreateView

まずは新規追加です。

veiwには利用modelとfieldを指定します。

polls/view.py
from django.views.generic.edit import CreateView

class CreateQuestionView(CreateView):

    model = Question
    fields = ['question_text', 'pub_date']

モデルには追加後に表示するviewをget_absolute_urlに指定します。

polls/model
class Question(models.Model):

    [追加]
    def get_absolute_url(self):
        return reverse('polls:detail', kwargs={'pk': self.pk})

formはquestionというmodelの新規追加の場合は[model名]に_formをつけた名前のテンプレートを用意します。

templates/polls/question_form.html
<form action="" method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Create" />
</form>

urls.pyに追加します。

polls/urls.py
from django.conf.urls import url

from . import views

app_name = 'polls'
urlpatterns = [
    url(r'^$', views.IndexView.as_view(), name='index'),
    url(r'^(?P<pk>[0-9]+)/$', views.DetailView.as_view(), name='detail'),
    url(r'^add$', views.CreateQuestionView.as_view(), name='add'),
]

http://127.0.0.1:8000/polls/add にアクセスします。

add2.png

値を入力し、Createボタンを押します。

add3.png

追加されたレコードがDetailに表示されます。

まとめ

長くなったので、続きます。
[Django] Generic editing viewsについて [2]

最後に

これは2015 tech-yuruyuru アドベントカレンダーの10日目の記事です。

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5