LoginSignup
1
1

More than 3 years have passed since last update.

Djangoでwebサービスを作ってみた振り返り2

Posted at

Djangoでwebサービスを作ってみました。完成はしましたが、ふんわりやっていたところを再度調べました。

views.pyで使ったあれこれ

クラスビューで使ったもの

例:

views.py
class ThreadView(ModelFormMixin, generic.DetailView):
    model = Group
    form_class = CommentCreateForm

    def form_valid(self, form):
        group_pk = self.kwargs['pk']
        comment = form.save(commit=False)
        comment.create_user = self.request.user
        comment.post = get_object_or_404(Group, pk=group_pk)
        comment.save()
        return redirect('<app名>:group_thread', pk=group_pk)

    def post(self, request, *args, **kwargs):
        form = self.get_form()
        if form.is_valid():
            return self.form_valid(form)
        else:
            self.object = self.get_object()
            return self.form_invalid(form)

form.save(commit=False)

formに紐ついたModelオブジェクトのインスタンスを返す。DBに登録はしない

関数ビューで使ったもの

returnの後に続くページ遷移メソッド

renderとか使いましたが、使い分けまとめ

HttpResponse

文字列やイテレータを引き渡す(と、公式に書かれていますが使っていないのであまりイメージできていない。。)

render

renderメソッドは、基本的にrequest、template_name、contextという3つの引数を取る。
request:getかpostか
template_name:htmlファイル
context:DBに入っているデータの情報
公式ドキュメントの説明では、
『テンプレートをロードしてコンテキストに値を入れ、テンプレートをレンダリングした結果を HttpResponse オブジェクトで返す』

redirect

POSTで返って来たデータを破棄して違うviewに遷移させる

1
1
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
1
1