Django入門ブログ構築 2日目
やったこと
- 投稿画面の作成
- 投降後のDBの追記
- フォーム画面の作成
わかったこと
app/views.py
class CreatePostView(LoginRequiredMixin, View):
def get(self, request, *args, **kwargs):
form = PostForm(request.POST or None)
return render(request, 'app/post_form.html', {
'form':form
})
def post(self, request, *args, **kwargs):
form = PostForm(request.POST or None)
if form.is_valid():
post_data =Post()
post_data.author = request.user
post_data.title = form.cleaned_data['title']
post_data.content = form.cleaned_data['content']
post_data.save()
return redirect('post_detail',post_data.id)
return render(request, 'app/post_form.html', {
'form':form
})
- データベースの取得・追加はPOSTクラスを使う
- {インスタンス名}.{プロパティ名} = データ
- {インスタンス名}.save()でDBの更新
- formはPostFormクラスを使う
- {インスタンス名}=PostForm(request.POST or None)
- ログインチェック:{インスタンス名}.is_valid()
- if文でログインチェック
- フォームからのデータ取得:{インスタンス名}.cleaned_data['{プロパティ名}']
{% extends "app/base.html" %}
{% load widget_tweaks %}
{% block content %}
<div class="my-4">
<h2>投稿</h2>
</div>
<form method="post">
{% csrf_token %}
<div class="formpost">
{% render_field form.title class="form-control" placeholder="タイトルを入力" %}
</div>
<div class="formpost">
{% render_field form.content class="form-control" placeholder="本文を入力" %}
</div>
<button class="btm btn-warning" type="submit">投稿する</button>
</form>
{% endblock %}
- フォーム画面の作成には{% load widget_tweaks %}と記述してウィジットを呼び出す。
- {% csrf_token %}
- <div class="formpost">{% render_field form.title class="form-control" placeholder="タイトルを入力" %}</div>
- render_field:おそらく呼び出したウィジット
- form.title:form内のtitleというプロパティに格納
- placeholder:入力前に表示される。ヒントなどを表示
次やること
- 編集画面の作成
コメント
コメントを投稿