8

フロントエンドの Web サイト開発は初めてなので、ルートや ORM などのいくつかのことは理解できます。理解できないのは、それらがどのように連携するかです。私の理解では、Pyramid/Django などで構築された Web サイト用のコンポーネントがたくさんあります。

  1. テンプレート エンジン: コードから HTML を抽象化するためのエンジン。理にかなっています。

  2. SQLAlchemy et al: ORM。罰金。

  3. レンダラー。わかりません。

  4. JS ライブラリ: JQuery et al: きれいな効果を追加する以外に、これらが何に使用されるのかわかりません。これはテンプレート エンジンとどのように相互作用しますか? これはフレームワーク全体とどのように相互作用しますか? Pyramid で jquery のコードを記述できますか、それとも JS を個別に記述し、JS ファイルをテンプレートにプラグインするか、または...?

  5. フォーム テンプレート ライブラリ (formish、formalchemy など): これらは全体像とどのように関連していますか? 彼らはどこにプラグインしますか?

不足している他の重要なコンポーネントはありますか?

それで、誰かが私を助けてスタックを説明してもらえますか?

4

2 に答える 2

8

1) テンプレート エンジン: コードから HTML を抽象化するためのエンジン。理にかなっています。

これらはいくつか用意されています。Mako は、多くの新しい概念を学ぶ必要がないように、テンプレートで多くの一般的な Python イディオムを利用しようとします。Jinja2 は Django に似ていますが、より多くの機能を備えています。Genshi は、XML ベースのテンプレートが好きな場合に使用します。

全体に不慣れな人として、残念ながらどれが最も簡単に開始できるかを言うのは難しい. おそらくJinja2。

2) SQLAlchemy 等。ORM。罰金。

うん。

3) レンダラー。わかりません。

レンダラーは Pyramid ビュー構成オプションであり、ビューが dict を返す場合、それを指定された「レンダラー」に渡す必要があることを Pyramid に伝えます。レンダラーは拡張名で動作するように設定されており、Pyramid にはいくつかの組み込みが付属しています: http://docs.pylonsproject.org/projects/pyramid/1.0/narr/renderers.html#built-in-renderers

つまり、レンダラー オプションは、渡された名前を参照するだけで、拡張子 (.mak、.pt、'json'、'string'、.etc) に一致するテンプレート エンジンを見つけ、それを使用して dict の結果をレンダリングします。 .

多くのフレームワークでは、レンダラーを構成として指定しませんが、代わりにビュー内に次のようなコードをいくつか入れます。

def somefunc(request):
    return render_to_response('/some/template.mak', {})

Pyramid では、以下で同じことができます:

@view_config(renderer='/some/template.mak')
def somefunc(request):
    return {}

後者が便利な機能である理由はいくつかあります。

  1. 完全に構成されている場合は、ビューのコード ロジックを変更せずにレンダラーをオーバーライドできます。

  2. 他の条件に基づいてレンダラーを変更する複数の構成を追加できます。

HTTP リクエストが XHR (テンプレート エンジンによる HTML の吐き出しを必要とする一般的な HTTP リクエストではなく、JSON 形式の結果を必要とする AJAX リクエスト) であるかどうかに基づいてレンダラーを変更するこの例を検討してください。

@view_config(renderer='json', xhr=True)
@view_config(renderer='/some/template.mak')
def somefunc(request):
    # lookup some_dict_data in a db, etc.
    return some_dict_data

4) JS ライブラリ: JQuery など。きれいな効果を追加することを除いて、これらが何を使用するのかわかりません。これはテンプレート エンジンとどのように相互作用しますか? これはフレームワーク全体とどのように相互作用しますか? ピラミッドで jquery のコードを記述できますか、それとも JS を個別に記述するか、JS ファイルをテンプレートにプラグインするか、または...?

JS ライブラリを使用すると、Javascript を簡単に記述できます。それらはブラウザーで DOM と対話し、JSON 形式の結果を必要とする Web アプリケーションに HTTP 要求を送信する以外に Pyramid と対話することはありません。

まず、HTML、DOM ツリー、および HTML、CSS、および Web アプリケーションだけで動作するサイトに慣れるまで、Javascript を完全に無視することをお勧めします。

5) フォーム テンプレート ライブラリ (formish、formalchemy など) これらは全体像とどのように関連していますか? 彼らはどこにプラグインしますか?

それらを完全に無視して、基本的な HTML フォーム要素を作成することを強くお勧めします。あなたは Web スタック全体に不慣れであり、最初に基本に慣れることなく、Web 開発の最も高度な側面に直接ジャンプする必要はありません。

ただし、基本的なフォームを作成した後に必要になるのは、送信されたフォームに有効なパラメーターが含まれていることを簡単に確認できるフォーム検証ライブラリが必要になることです。PHP の昔は、人々はフォームを通過する何百行もの if/else ステートメントを書いていました (今でもそうしているものもあります! ack!)。

最近では、フォームの有効なパラメーターが何であるかを簡単に宣言できるフォーム検証ライブラリを使用しています。検証のためだけに使用するのはかなり簡単なので、最初は FormEncode をお勧めします。Pyramid の場合、FormEncode を使用する最も簡単な方法は、おそらくpyramid_simpleform です: http://packages.python.org/pyramid_simpleform/

今のところ、フォーム レンダリング部分は無視して、HTML フォーム要素を自分でテンプレートに記述し、簡単な FormEncode 統合のためだけに pyramid_simpleform を使用します。

要するに、ビュー関数とテンプレートを使用して、リンク付きの HTML ページを表示することから始めます (そして、初心者にとってトラバーサルよりも把握しやすい URL ディスパッチを使用します)。次に、フォーム、その HTML および検証を追加し、CSS を追加してスタイリングを開始します。

次に、jQuery を使用した基本的な Javascript から始めて、ページ上で物事を動かし、AJAX を介して Web アプリケーションとやり取りして、より多くのデータを取得します。一度に多くのことに取り組みすぎないようにしましょう。

于 2011-04-05T00:23:15.913 に答える
3

3) レンダラー。わかりません。

通常、レンダラーはデータ/モデルを受け取り、クライアントが必要とするものに変換します。クライアントが単なるブラウザの場合、レンダラーは通常、テンプレートを介してデータをマッシュアップして HTML を生成します。クライアントが JavaScript コードまたはブラウザー以外のアプリケーション (デスクトップ アプリケーション、データを消費する別のサーバーなど) である場合、レンダラーは通常 JSON (または XML) を生成します。これは、シリアル化またはマーシャリング システムと考えることができます。

4) JS ライブラリ:

これらは、ユーザー インターフェイスのプログラミングに使用するものです。ユーザー インターフェイスは、HTML の上にいくつかの美しい効果を追加しただけかもしれませんが、それ以上のものになる可能性があります。たとえば、Google Docs は JavaScript であり、単なる効果ではありません。Cloud9 IDEは、JavaScript で構築された完全なアプリケーションの別の例です (別の例について Raynos に感謝します)。

5) フォーム テンプレート ライブラリ

これらは、(多かれ少なかれ) テンプレート エンジンのマクロ システムと考えることができます。データ スキーマがある場合は、これらを使用してテンプレート チャンクを生成し、対応する戻りデータのサーバー側処理を自動的に処理できます。

不足している他の重要なコンポーネントはありますか?

最新の Web スタックは、従来のクライアント サーバー システムと考えることができます。これはおそらく一部の人々を怒らせるでしょうが、おそらくスケールを除いて、ここには根本的に新しいものは何もありません. クライアントは、レイアウト用の HTML と CSS と、機能と見栄え用の JavaScript (おそらくツールキットを使用) で構築されています。サーバーは、ある種の Web サーバーです。クライアントとサーバー間の通信は、通常、JSON と HTML over HTTP の組み合わせで行われます。Web-1.0 は (私のマーケティング用語は許していただけるかもしれませんが) 古い学校のダム端末と考えることができますが、Web-2.0 は X 端末に似ており、クライアントにいくつかの頭脳があります。

于 2011-02-07T07:05:24.373 に答える