3

PHPファイルでは、このタスクは別のファイルの単純なインクルードかもしれませんが、Djangoでも同様の方法があるのだろうか? ここで説明したように: https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#include

4

2 に答える 2

6

簡単な答え: いいえ、Python はそのようには機能しません。

ここに長いものがあります:

PHP と Python の Web 開発の違いについて少し

まず、includerequireは PHP 言語自体の一部です。ソースコードを処理する前に、PHP インタープリターはそれらの関数に引数として与えられたファイルからソースコードを取り込み、解釈を行います。これは、PHP 設計の主な目的 (HTML、または一般的にはテキストの前処理) の継承です。

Python での Web 開発は少し異なります。言語自体は汎用プログラミング言語として設計されているため、デフォルトではテキスト処理を想定していません。コードが実行されるだけです。そのため、Web 開発は通常、フレームワーク (または、すべてをゼロから行いたい場合はwsgiモジュール) を使用して行われます。

上記のすべてのことは、すべてのテキスト操作 (生成するすべての出力、通常、結果のテキスト文字列 (またはバッファリングで使用される場合は文字列リスト) を手動で作成し、出力結果を自分で与えることによって行うこと) を意味します。

テンプレート言語

これは、Python で記述されたすべての (またはほぼすべての) Web アプリケーションの不可欠な部分となったテンプレート言語が誕生した、やや厄介なポイントです (PHP の世界の Smarty に似たものを想定できます)。それらはたくさんあります: jinja、jinja2、mako、chameleon ... などなど。それらはすべて異なりますが、同じ目的を果たします(基本的な表現ロジックのデータのプレースホルダーをテンプレートに提供することにより、テキスト生成を簡単にします)。

そして、Python Web フレームワークの主な特徴は、アプリケーションのロジックと表現が厳密に分割されていることです。

ここで、あなたの質問の内容にたどり着きました:

テキスト テンプレート機能を提供するこれらのテンプレート ライブラリはすべて異なるため、PHP のようなインクルードを作成する一般的な方法はなく、Python で一般的であると言えます。これらのツールはそれぞれ、さまざまな方法と処理の哲学を提供します。特に、主に 2 つの主流の方法に分けられます。

  • マクロおよびスロットベース (Chameleon)
  • テンプレート継承ベース (Jinja2、Django テンプレート言語)

必要なのは、ニーズに最も適したものを選択することです (構文が好きかどうかに関係なく、より高速なものもあれば、より読みやすいものもあります)。あなたの申請。

近づく: Django について

ビュー コンテキストを適応させたアプリケーションの再利用部分 (ページネーション ウィジェットなど) を含めたい場合は、インクルード テンプレート タグを使用するのが一般的です。

ただし、すべてのページに共通のヘッダーまたは別の共通部分がある場合は、継承を使用することをお勧めします。これは次の 2 つの手順で実現されます。

  • 基本テンプレートが作成されます (一般的なヘッダーとフッターを含む)
  • 特定のテンプレートは、テンプレート継承機能を介して作成されます。特に、Django のテンプレート タグを拡張します。
于 2012-08-20T09:14:57.423 に答える
0

Python は PHP ではありません。

Django では、テンプレートに任意のスクリプト (コード) を書くことはできません。views.py (コントローラー) ですべての計算/ビジネス タスクを実行し、結果をテンプレートに渡す必要があります。テンプレートでは、通常、結果セットを反復処理してデータを表示します。django 1.4 では、新しい割り当てタグが追加されたので、次のことができます

{% get_movie_tickets_for_theater movie theater as tickets %}

しかし、あなたget_movie_tickets_for_theaterはtemplatetags pythonファイルで定義されます。

于 2012-08-20T09:25:49.657 に答える