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['{プロパティ名}']
app/templates/form.html
{% 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:入力前に表示される。ヒントなどを表示
次やること
  • 編集画面の作成

コメント

このブログの人気の投稿

Django入門ブログ構築 1日目