演習課題「編集フォームを作成する」
右の環境には、「myblog」プロジェクトに「diary」という1行掲示板が作成してあります。
投稿編集フォームでupdateを呼び出した時に、編集内容を保存するよう修正してください。
採点して、すべてのジャッジに正解すれば、演習課題クリアです!
※ 採点時は、サーバーを起動し、問題文に関するページにアクセスできる状態にしてください。
#09:編集フォームを追加しよう
ここでは、掲示板アプリケーションに既存の投稿を修正する機能を追加します。そのために、既存の投稿を修正できる編集フォームを作成します。
myapp/bbs/views.pydef edit(request, id):
article = get_object_or_404(Article, pk=id)
articleForm = ArticleForm(instance=article)
context = {
'message': 'Edit Article',
'article': article,
'articleForm': articleForm,
}
return render(request, 'bbs/edit.html', context)
myapp/bbs/templates/bbs/edit.html{% extends './base.html' %}
{% load bootstrap4 %}
{% block content %}
<h1>{{ message }}</h1>
<form action='{% url "bbs:update" article.id %}' method='post' class='form'>
{% csrf_token %}
{% bootstrap_form articleForm layout='horizontal' %}
<button type='submit' class='btn btn-outline-primary'>保存する</button>
<a href='{% url "bbs:detail" article.id %}' class='btn btn-outline-secondary'>戻る</a>
</form>
{% endblock %}
myapp/bbs/views.pydef update(request, id):
if request.method == 'POST':
article = get_object_or_404(Article, pk=id)
articleForm = ArticleForm(request.POST, instance=article)
if articleForm.is_valid():
articleForm.save()
context = {
'message': 'Update article ' + str(id),
'article': article,
}
return render(request, 'bbs/detail.html', context)
myapp/bbs/templates/bbs/detail.html<div>
<a href='{% url "bbs:index" %}' class='btn btn-outline-primary'>一覧</a>
<a href='{% url "bbs:edit" article.id %}' class='btn btn-outline-primary'>編集</a>
<a href='{% url "bbs:delete" article.id %}' class='btn btn-outline-secondary'>削除</a>
</div>
myapp/bbs/templates/bbs/idnex.html<table class='table table-striped table-hover'>
{% for article in articles %}
<tr>
<td>{{ article.content }}</td>
<td>{{ article.user_name }}</td>
<td>
<a href='{% url "bbs:detail" article.id %}' class='btn btn-outline-primary'>詳細</a>
</td>
</tr>
{% endfor %}
</table>
フォームを使う | Django documentation | Django
https://docs.djangoproject.com/ja/2.0/topics/forms/
モデルからフォームを作成する | Django documentation | Django
https://docs.djangoproject.com/ja/2.0/topics/forms/modelforms/
Django2.0入門: 初心者でも10分でWebサービスを作れる!PythonフレームワークDjangoとPaizaCloudの使い方 - paiza開発日誌
https://paiza.hatenablog.com/entry/2018/02/28/paizacloud_django
DjangoのForm生成が便利すぎる件について - ドキッ!はてなブログに移転しました!
http://d.hatena.ne.jp/natsumesouxx/20100522/1274554253
DjangoのForm(CreateView、UpdateViewなど)について - Qiita
https://qiita.com/felyce/items/5042db0792c9f7d01c1e
Python Django入門 (4) - Qiita
https://qiita.com/kaki_k/items/6e17597804437ef170ae
Python Django チュートリアル(6) - Qiita
https://qiita.com/maisuto/items/86add9263a641899b1e3