演習課題「記事の新規作成と編集のフォームを作る」
右の環境には、「myblog」プロジェクトに「news」というアプリケーションが作成してあります。また、プロジェクトとnewsアプリのルーティングは、以下のアクセスが可能になるよう設定してあります。
news/
news/(id)
news/create
news/(id)/update
views.pyを修正して、クラスベースの汎用ビューで新規作成と編集のフォームを作成してください。
採点して、すべてのジャッジに正解すれば、演習課題クリアです!
#08:新規と編集のフォームを作ろう
ここでは、お店情報を登録・修正できる投稿フォームを作ります。Djangoでは、クラスベースの汎用ビューを使うことで、新規と編集のフォームを共通のテンプレートで作ることができます。
myapp/lunchmap/urls.pyurlpatterns = [
path('', views.IndexView.as_view(), name='index'),
path('<int:pk>/', views.DetailView.as_view(), name='detail'),
path('create/', views.CreateView.as_view(), name='create'),
path('<int:pk>/update/', views.UpdateView.as_view(), name='update'),
]
myapp/lunchmap/views.pyfrom django.urls import reverse_lazy
from django.views import generic
from .models import Shop
class IndexView(generic.ListView):
model = Shop
class DetailView(generic.DetailView):
model = Shop
class CreateView(generic.edit.CreateView):
model = Shop
fields = '__all__'
class UpdateView(generic.edit.UpdateView):
model = Shop
fields = '__all__'
myapp/lunchmap/templates/lunchmap/shop_form.html{% extends './base.html' %}
{% block content %}
<h1>お店情報の{{ object|yesno:'更新,作成'}}</h1>
<form action='' method='post'>{% csrf_token %}
{{ form.as_p }}
<button type='submit' class='submit'>{{ object|yesno:'更新,作成'}}</button>
</form>
<div>
<a href='JavaScript:history.back()'>< 戻る</a>
</div>
{% endblock %}
- はじめての Django アプリ作成、その 4 | Django documentation | Django
https://docs.djangoproject.com/ja/2.1/intro/tutorial04/
- reverseを使って関数のURLを取得する - 日記
https://tnamao.hatenablog.com/entry/20100403/1270308534
- DjangoでのURL⇔view関数の正引き・逆引き - orangain flavor
https://orangain.hatenablog.com/entry/20080823/1219329846