get_querysetとTemplatesのオーバーライド
ビューごとにデータとテンプレート名をカスタマイズします
「get_querysetとTemplatesのオーバーライド」はCoddyKit上の無料Django Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDjango Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Django Academyコースには全4レッスンが含まれています。
汎用ビューを自分の用途に合わせる
汎用ビューには適切なデフォルト設定がありますが、実際のアプリには調整が必要です。いくつかのフックをオーバーライドしてカスタマイズします。🔧
get_querysetの役割
get_querysetはビューが扱う行を決めます。そのため、オーバーライドすれば結果を絞り込んだり並べ替えたりできます。
get_querysetで絞り込む
絞り込んだquerysetを返すと、公開済みの投稿など、必要な行だけを表示できます。
class PostList(ListView):
model = Post
def get_queryset(self):
return Post.objects.filter(published=True)URLまたはユーザーを読み取る
get_queryset内ではself.requestを読み取れるため、ログイン中のユーザーに合わせて結果を絞り込めます。
def get_queryset(self):
return Post.objects.filter(author=self.request.user)template_nameをオーバーライドする
デフォルトのテンプレートパスでは都合が悪いですか?template_nameに任意のテンプレートを指定できます。
class PostList(ListView):
model = Post
template_name = "blog/home.html"コンテキスト変数をオーバーライドする
template_nameとcontext_object_nameを組み合わせると、カスタムテンプレートで分かりやすい変数名を使えます。
class PostList(ListView):
template_name = "blog/home.html"
context_object_name = "posts"コンテキストを追加する
get_context_dataをオーバーライドすると、オブジェクトと一緒にページタイトルなどの追加の値を渡せます。
def get_context_data(self, **kwargs):
ctx = super().get_context_data(**kwargs)
ctx["title"] = "Blog"
return ctx必ず最初にsuperを呼ぶ
get_context_dataでは、まずsuper()を呼びます。これにより、ビューがすでに追加したオブジェクトを保持したうえで、自分の値を追加できます。
サフィックスをカスタマイズする
model_listよりmodel_browseを使いたいですか?template_name_suffixを設定すると、Djangoが付加するサフィックスだけを変更できます。
class PostList(ListView):
template_name_suffix = "_browse"結果を並べ替える
get_querysetをオーバーライドして行を並べ替えます。たとえば、新しい投稿を先に表示できます。
def get_queryset(self):
return Post.objects.order_by("-created")小さなフックで大きく制御する
これらの少数のオーバーライドを使えば、汎用ビューの整った構造を保ちながら、ほぼあらゆる要件に合わせて調整できます。💡
簡単な確認
get_querysetをオーバーライドする目的は何ですか?
まとめ:ビューのカスタマイズ
get_queryset、template_name、get_context_dataを使って汎用ビューを調整し、シンプルさを保ちながらデータとテンプレートをカスタマイズしました。🎉
AI チューターと学ぶ Python — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 30
- レッスン
- 120
よくある質問
「get_querysetとTemplatesのオーバーライド」レッスンは無料ですか?
はい。「get_querysetとTemplatesのオーバーライド」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Django Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Django Academyコースには全4レッスンが含まれています。
「get_querysetとTemplatesのオーバーライド」で何を学びますか?
ビューごとにデータとテンプレート名をカスタマイズします ブラウザで直接実行するハンズオンコードでDjango Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Django Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDjango Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「get_querysetとTemplatesのオーバーライド」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDjango Academyレッスンでコードを書いて実行できますか?
はい。すべてのDjango Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ListViewとDetailView
- CreateViewとUpdateView
- DeleteViewとsuccess_url
- get_querysetとTemplatesのオーバーライド