問題タブ [django-class-based-views]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
396 参照

django - Django でテンプレートのサブディレクトリへのビューを作成する

特定のディレクトリの下にあるすべてのテンプレートを表示する TemplateView を作成したいと思います。

たとえば、私は

...

(もっとたくさん)

私のurls.pyには..

..

私のviews.pyには

ただし、誰かが URL /staticpages/blahblah.html (存在しない) にアクセスすると、このビューによって受け入れられ、テンプレートが見つからないというエラーが生成されます。テンプレートが見つからない場合、どうすれば 404 にリダイレクトできますか?

または、これを行うより良い方法はありますか?

0 投票する
3 に答える
2352 参照

django - django 1.3 URL テンプレート タグとクラス ベースのビュー

持っているアプリを 1.1 から 1.3 に移行し始めたところです。

私はクラスベースのビューの厚さに入り始めており、吹き飛ばされていますが、あまり良い方法ではありません.
いくつかの不満がありますが、ここでの具体的な質問は次のとおりです。

これは、一般的なクラスベースのビューで url テンプレート タグを使用できる唯一の方法ですか?
クラスベースのビューへのパラメータを持つDjango逆URL、
つまりすべてのURLエントリに名前を付ける必要がありますか?

Django の基本的な哲学の 1 つは DRY ですが、ここにいるのはばかげているように思えます.... RY-ing.....

前もって感謝します。

編集:
だから私はhttps://gist.github.com/1877374を持っています

レンダリング中に TemplateSyntaxError Caught NoReverseMatch: Reverse for 'views.HomeView.as_view' with Arguments '()' and keyword arguments '{}' not found というエラーが発生します。

これを間違って使用していますか?


Tangent: urls.py ファイル内のすべてのエントリ
に 名前を付ける必要がある場合、なぜ RY を使用していると私が考えるのかについて、もう少し説明したいと思います。

私の urls.py は通常 https://gist.github.com/1877462のようになります

デカップリングについては完全に理解しています。
ここでのポイントは、必要なときにそうする能力があるということです。必要なときは、名前機能を絶対に使用します。それ以外の場合、view.py のクラス/機能の名前と同じになることが多いのに、すべてのエントリに冗長に URL を追加し、すべてのエントリに名前を付けるために時間とエネルギーを費やしたいのはなぜですか?

たぶん、これはSOに関する別の質問に分岐する必要があります。

0 投票する
2 に答える
9410 参照

python - Django - DetailView でのフィルタリング

次のような関数ベースのビューがありました。

成功した場合はアカウントの詳細が表示され、アカウントにアクセスする権限がないか存在しない場合は 404 が表示されます。

私はクラスベースのビュー(DetailViewを拡張)を使用して同じものを実装しようとしていましたが、これを思いつきました:

urlconf:

この態度は機能しますが、2 つの余分なクエリが発生し、見た目が正しくありません。

同じ結果を達成するための標準的またはよりエレガントな方法はありますか?

0 投票する
1 に答える
2031 参照

python - テンプレートを含む、クラスベースのビュークラッドの完全な例を探しています

クラスベースのビューに関するDjango1.3のドキュメントは、宝探しのようです。クラスの書き方は十分に明確です...しかし、どのような種類のテンプレートコードが各ジェネリッククラスに一致しますか?誰かがナッツに完全な例のスープを提供しますか?これが私がこれまでに持っているものです:

urls.py

views.py

generic_form_popup.html


この場合、古いスタイルがまだ機能していることを考えると、新しいスタイルを学ぶ価値があるかどうかを調べています。

urls.py

views.py

generic_form_popup.html

0 投票する
1 に答える
547 参照

python - Django CBV 継承: 属性のオーバーライド

Django プロジェクト用のカスタム クラス ベースのビューを作成していますが、属性に関する設計上の決定に直面しました。

ゲッター関数

Django のジェネリック ビューを調べたところ、クラス変数とカスタム ゲッター関数の両方を提供するクラスが非常に多くあることがわかりました。例えば

この設計上の決定は理にかなっています。そのようにするsuper()と、拡張クラスのオーバーライド メソッドを呼び出すことができるからです。

プロパティ

私のプロジェクトでは、単純な値を使用してオーバーライドできる特定の値がありますが、動的に生成する必要がある場合があります。最初は上記と同様のメソッドを作成しましたが、これを行うにはプロパティの方が適しているのではないかと考えました。

インスタンス.__dict__

これらの値をテンプレート内で使用する予定です。拡張ビューのインスタンスをテンプレートに渡し、次の方法で属性を表示します。

これはテンプレートであり、インスタンス属性が値であるか関数であるかは問題ではないため、次のようにクラスを記述することもできます。

def counterは、 の古い値ベースの属性を置き換えますinstance.__dict__

質問

質問にたどり着くには、リストされているアプローチのどれが最良の選択ですか?

  • super()親のゲッター関数を呼び出すことができるので、ゲッターのアプローチは素晴らしいですが、ほとんどの場合、それはおそらく必要ありません。
  • プロパティ アプローチははるかに単純であり、記述されるコードが少なくなります。super()ただし、親のプロパティ関数を呼び出すことはできません。ほとんどの場合、この動作は必要ありませんが、super()機能が必要な場合があるため、プロパティとカスタム getter 関数を使用してオーバーライドできる単純な属性が混在しています。
  • 最後のアプローチは、プロパティ アプローチよりもさらに少ないコードですが、スタイルが良いとは思えません。
0 投票する
3 に答える
10943 参照

django - djangoクラスベースのビュー - UpdateView - フォームの処理中にリクエストユーザーにアクセスする方法は?

Django のクラスベースの UpdateView では、ユーザー フィールドはシステムの内部にあるため除外し、要求しません。ユーザーをフォームに渡す適切なDjangoの方法は何ですか。(私が今それを行う方法は、ユーザーをフォームのinitに渡し、フォームのsave()メソッドをオーバーライドすることです。しかし、これを行う適切な方法があると確信しています。隠しフィールドまたはそのようなもの自然。

0 投票する
2 に答える
5523 参照

django - Django クラスベースのビュー - DeleteView - 確認要件を無効にする方法

クラスベースのビューに切り替えています。また、JavaScript を使用して、クライアント側で削除を確認します。Django DeleteView には、気にしない削除確認テンプレートが必要です。

Djangoであらゆる種類の削除の確認を無効にする簡単な方法はありますか?

0 投票する
2 に答える
2371 参照

django - Django クラスベースのビューをサブクラス化しますか?

1.3 からの Django の新しいクラスベースのビューについて頭を捻ろうとしています。

私は少し読んだ:

しかし、私が見たことのない例や方法は、いくつかのビューが共通の「親」クラスをサブクラス化して、そこからデータを再利用できるかどうかです。(一般的な命名法のスラッシングを許してください)

私がやろうとしていることの例:

したがって、2 つの子クラスの違いは、使用するテンプレートと返される「データ」だけです。どちらのビューも、親クラスから session_data と other_variables を返すため、すべての子クラスで「return session_data, other_variables」を繰り返すことはありません。

0 投票する
1 に答える
461 参照

python - 継承されたクラスでdjango.utils.decorators method_decoratorを使用しているときにメソッド定義を繰り返す必要があるのはなぜですか

こんにちは、django.utils.decorators method_decorator デコレータを理解しようとしています。method_decorator は、関数デコレーターをクラス メソッド デコレーターに変えます。

このデコレーターのソースは (https://github.com/django/django/blob/master/django/utils/decorators.py) にあります。

私の関数デコレーターの例:

私の基本クラスの例:

ここで、django.utils.decorators method_decorator を使用して Myclass メソッド undecorated_function を装飾する継承クラスを作成したいと考えています。method_decorator を機能させるには、継承されたクラスで関数を再定義する必要があります。

だからこれはうまくいきます:

私は少し混乱しており、以下のコードが機能せず、構文エラーが発生する理由がわかりません。

これは正しく解釈されず、構文エラーが発生します。

再定義せずに子クラスの関数を装飾するにはどうすればよいですか?

0 投票する
1 に答える
7360 参照

django - login_requiredデコレータを@method_decoratorでデコレートする必要があるのはなぜですか

このブログ投稿に投稿されたミックスインのコードを理解しようとしています。

これらのミックスインは、ミックスイン内login_requiredからデコレータを呼び出しますが、 fromによって装飾されます。以下のサンプルコードでは、デコレータを装飾する必要がある理由がわかりません。django.contrib.auth.decoratorsmethod_decoratordjango.utils.decoratorslogin_required

デコレータは、method_decorator「関数デコレータをメソッドデコレータに変換する」ために使用されると言っていますが、テストコードでは、method_decoratorがなくてもデコレータを使用できます。

私のデコレータ

上記のデコレータを直接呼び出すクラスは、によって装飾されたデコレータを呼び出す場合と同じ結果を直接生成します。method_decorator