... それではもう少しviewを polls/views.py に追加していきましょう。これから追加するviewでは引数をとります。 polls/views.py ¶ def detail ( request , question_id ): return HttpResponse ( "You're looking at question %s ." % question_id ) def results ( request , ... erns = [ # ex: /polls/ path ( "" , views . index , name = "index" ), # ex: /polls/5/ path ( "<int:question_id>/" , views . detail , name = "detail" ), # ex: /polls/5/results/ path ( "<int:question_id>/results/" , views . results , name = "results" ), # ... olls/5/vote/ path ( "<int:question_id>/vote/" , views . vote , name = "vote" ), ] ブラウザで "/polls/34/" を見てください。 detail() 関数が実行され、URLで指定したIDが表示されます。 "/polls/34/results/" と "/polls/34/vote/" も試してみてください--これらは ... ... それではもう少しviewを polls/views.py に追加していきましょう。これから追加するviewでは引数をとります。 polls/views.py ¶ def detail ( request , question_id ): return HttpResponse ( "You're looking at question %s ." % question_id ) def results ( request , ... erns = [ # ex: /polls/ path ( "" , views . index , name = "index" ), # ex: /polls/5/ path ( "<int:question_id>/" , views . detail , name = "detail" ), # ex: /polls/5/results/ path ( "<int:question_id>/results/" , views . results , name = "results" ), # ... olls/5/vote/ path ( "<int:question_id>/vote/" , views . vote , name = "vote" ), ] ブラウザで "/polls/34/" を見てください。 detail() 関数が実行され、URLで指定したIDが表示されます。 "/polls/34/results/" と "/polls/34/vote/" も試してみてください--これらは ... ... くのプロジェクトで、これらは最もよく使われるビューです。 DetailView ¶ class django.views.generic.detail. DetailView ¶ このビューが動作している間、 self.object はビューが操作しているオブジ ... ェクトを含みます。 継承元 (MRO) このメソッドは、以下のビューからメソッドと属性を継承しています: django.views.generic.detail.SingleObjectTemplateResponseMixin django.views.generic.base.TemplateResponseMixin django.views.generic.detail.BaseDetailVi ... ew django.views.generic.detail.SingleObjectMixin django.views.generic.base.View メソッドのフローチャート setup() dispatch() http_method_not_allowed() get ... ... くのプロジェクトで、これらは最もよく使われるビューです。 DetailView ¶ class django.views.generic.detail. DetailView ¶ このビューが動作している間、 self.object はビューが操作しているオブジ ... ェクトを含みます。 継承元 (MRO) このメソッドは、以下のビューからメソッドと属性を継承しています: django.views.generic.detail.SingleObjectTemplateResponseMixin django.views.generic.base.TemplateResponseMixin django.views.generic.detail.BaseDetailVi ... ew django.views.generic.detail.SingleObjectMixin django.views.generic.base.View メソッドのフローチャート setup() dispatch() http_method_not_allowed() get ... ... 除された際に JavaScript を実行したい場合、 formset:added と formset:removed イベントを使用できます。 event.detail.formsetName は行が属するフォームセットを示します。 formset:added イベントでは、 event.target は新しく追加された行です。 カ ... dblock %} app/static/app/formset_handlers.js ¶ document . addEventListener ( 'formset:added' , ( event ) => { if ( event . detail . formsetName == 'author_set' ) { // Do something } }); document . addEventListener ( 'formset:removed' , ( event ) => { / ... を使用してイベントリスナーを登録する必要があります。jQueryはJavaScriptイベントを処理しますが、その逆は成り立ちません。 event.detail.formsetName の存在をチェックし、次のように古いリスナーのシグネチャにフォールバックできます: function handleFormsetAdded ( ... ... 除された際に JavaScript を実行したい場合、 formset:added と formset:removed イベントを使用できます。 event.detail.formsetName は行が属するフォームセットを示します。 formset:added イベントでは、 event.target は新しく追加された行です。 カ ... dblock %} app/static/app/formset_handlers.js ¶ document . addEventListener ( 'formset:added' , ( event ) => { if ( event . detail . formsetName == 'author_set' ) { // Do something } }); document . addEventListener ( 'formset:removed' , ( event ) => { / ... を使用してイベントリスナーを登録する必要があります。jQueryはJavaScriptイベントを処理しますが、その逆は成り立ちません。 event.detail.formsetName の存在をチェックし、次のように古いリスナーのシグネチャにフォールバックできます: function handleFormsetAdded ( ... ... , }, { "BACKEND" : "django.template.backends.jinja2.Jinja2" , "DIRS" : [ "/home/html/jinja2" , ], }, ] get_template('story_detail.html') を呼び出した場合、Django は次の順番にファイルを探します。 /home/html/example.com/story_detail.html ( 'django' エンジ ... ン) /home/html/default/story_detail.html ( 'django' エンジン) /home/html/jinja2/story_detail.html ( 'jinja2' エンジン) select_template(['story_253_detail.html ... ', 'story_detail.html']) を呼び出した場合、Djangoは以下の順番にファイルを探します。 /home/html/example.com/story_253_detail.html ( 'django' ... ... , }, { "BACKEND" : "django.template.backends.jinja2.Jinja2" , "DIRS" : [ "/home/html/jinja2" , ], }, ] get_template('story_detail.html') を呼び出した場合、Django は次の順番にファイルを探します。 /home/html/example.com/story_detail.html ( 'django' エンジ ... ン) /home/html/default/story_detail.html ( 'django' エンジン) /home/html/jinja2/story_detail.html ( 'jinja2' エンジン) select_template(['story_253_detail.html ... ', 'story_detail.html']) を呼び出した場合、Djangoは以下の順番にファイルを探します。 /home/html/example.com/story_253_detail.html ( 'django' ... ... p セクションに進んでください。 簡単なフォームを書く ¶ それでは、前回のチュートリアルで作成した投票詳細テンプレート ("polls/detail.html") を更新して、HTML の <form> 要素を入れましょう。 polls/templates/polls/detail.html ¶ < form action = " {% url 'polls ... ce" ]) except ( KeyError , Choice . DoesNotExist ): # Redisplay the question voting form. return render ( request , "polls/detail.html" , { "question" : question , "error_message" : "You didn't select a choice." , }, ) else : selected_choice . votes = ... n , pk = question_id ) return render ( request , "polls/results.html" , { "question" : question }) チュートリアルその 3 の detail() とほぼ同じです。テンプレートの名前のみ違います。この冗長さは後で修正することにします。 次に polls/results.html テンプレー ... ... p セクションに進んでください。 簡単なフォームを書く ¶ それでは、前回のチュートリアルで作成した投票詳細テンプレート ("polls/detail.html") を更新して、HTML の <form> 要素を入れましょう。 polls/templates/polls/detail.html ¶ < form action = " {% url 'polls ... ce" ]) except ( KeyError , Choice . DoesNotExist ): # Redisplay the question voting form. return render ( request , "polls/detail.html" , { "question" : question , "error_message" : "You didn't select a choice." , }, ) else : selected_choice . votes = ... n , pk = question_id ) return render ( request , "polls/results.html" , { "question" : question }) チュートリアルその 3 の detail() とほぼ同じです。テンプレートの名前のみ違います。この冗長さは後で修正することにします。 次に polls/results.html テンプレー ... 2026年10月08日