汎用ビューを使用してください:少ないコードが優れています。
テンプレートをロードし、レンダリングされたテンプレートを返す、URLに渡されたパラメータに基づいて、データベースから取得したデータ:これらのビューは、基本的なWeb開発の一般的なケースを表しています。これは非常に一般的ですので、Djangoは「汎用ビュー」システムと呼ばれるショートカットを提供しています。
汎用ビューあなたもアプリを書くためにPythonのコードを記述する必要はありませんポイントに抽象的一般的なパターン。
我々は我々自身のコードの束を削除することができますので、汎用ビューシステムを使用するために私たちの調査でアプリを変換してみましょう。私達はちょうど、変換を行うためにいくつかの手順を取る必要があります。私達はします:
- URLconfを変換します。
- 古い、不要な景色の一部を削除します。
- Djangoの汎用ビューに基づいて新しいビューをご紹介。
#のポーリング/ views.py から django.httpの輸入HttpResponseRedirect から django.shortcutsはインポートget_object_or_404を、レンダリング から django.urls インポート逆 から django.views インポートジェネリック から .models インポートの選択、質問 クラスIndexView(generic.ListViewを): テンプレート名 = " 世論調査/ index.htmlを' context_object_name = ' latest_question_list " DEF get_queryset(自己 ):""」最後の5つの公表の質問を返します。""」 を返す(Question.objects.order_by ' -pub_date ')[:5 ]
#1 DEF詳細(リクエスト、question_id): # 質問= get_object_or_404(質問、PK = question_id) #1 リターンレンダリング(リクエスト、 'ポーリング/ detail.html'を、{ '質問':質問})
クラスDetailView(generic.DetailView): モデル = 質問 テンプレート名 = ' 世論調査/ detail.html ' クラスResultsView(generic.DetailView): モデル = 質問 テンプレート名 = ' 世論調査/ results.html '
- 各汎用ビューは、モデル(モデル)に作用するかを知る必要があります。これは、提供されるモデルの属性を使用して行われます。
- DetailView汎用ビューは、キャプチャURLの主キーの値から期待「PK」と呼ばれ、我々は、一般的なビューIDの変更PKを発行します。