9

私はしばらくの間 Pylons で開発を行ってきましたが、最近 Pyramid を作成するために別のフレームワークとマージしていることを知りました。

サンプルコードを調べて違いを確認しましたが、少し混乱しています...

たとえば、コントローラーはビューに置き換えられました。大きな問題ではありません...しかし、興味深いのは、これらのディレクトリがないことです。それは単に 1 つのファイルです: views.py.

この新しい MVC 構造はどのように機能しますか? すべてのアクションをこの 1 つのファイルに書き込む必要がありますか? 同様の名前のアクション (複数のインデックスなど) があると、かなり面倒になる可能性があります:/

このフレームワークの使用方法に関するいくつかの優れたチュートリアル/ドキュメントの方向性を教えていただけますか?

4

2 に答える 2

26

さまざまなビュー関連の構成メソッド (config.add_view、config.add_handler) では、ビューまたはハンドラーとして使用されるクラスまたは関数としてドット ネームを渡す必要があるため、コードを好きなように配置できます。

たとえば、プロジェクト パッケージ名が「views」という名前のパッケージmyproject内の Python サブパッケージにすべてのビューを配置したい場合 ( http://docs.python.org/tutorial/modules.html#packagesを参照)、代わりに単一ビューファイルでは、次のことができます。myproject

  • パッケージviews内にディレクトリを作成します。mypackage

  • 既存のviews.pyファイルをviews、たとえば、という名前の新しいディレクトリ 内のファイルに移動blog.pyします。

  • という名前の新しいviewsディレクトリ内にファイルを作成します__init__.py(空でもかまいません。これは、viewsディレクトリがpackageであることを Python に伝えるだけです。

次に__init__.pymyprojectプロジェクト (ディレクトリに作成したばかりではなく、親ディレクトリにあるプロジェクト) を次のように変更します。__init__.pyviews

config.add_handler('myhandler', '/my/handler', handler='mypackage.views.MyHandler')

に:

config.add_handler('myhandler', '/my/handler', handler='mypackage.views.blog.MyHandler')

その後、引き続きファイルをディレクトリに追加し、またはviewsとして渡されたドット名を使用して、それらのファイル内のビューまたはハンドラ クラス/関数を参照できます。handler=view=

于 2010-11-09T05:42:06.490 に答える
5

これはかなり簡単なはずの1つの答えです。この質問は、Pyramid1.3がまだリリースされていないときに行われました。新しいデコレータは今ではかなり良い仕事をしているので、Pythonハンドラーについては忘れてください。

しかし、始めに:ピラミッドには共通の構造はありません。必要に応じて、アプリ全体を1つのファイルに書き込むこともできます。言い換えれば、パイロンがどのように構成されているかが好きなら、それを使うことができます。独自の構造を設定したい場合は、それを選択してください。

サイトに複数のファイルが必要ない場合は...GOFOR IT !!! 本当に必要なのは、それが機能することだけです。

私は個人的にそのような構造を持っています

- root
    - __init__.py # all setup goes there
    - security.py # where functions related to ACL and group_finder
    - models.py or models/ # where all my models go
    - views.py or views/   # where all my views go 
    - templates
       - modelname
          - all template related to this resource type

    - scripts # where I put my scripts like backup etc
    - lib # all utilities goes there
    - subscribers # where all events are defined

ビューパッケージは、ResourceTypeでビューをグループ化する多くのファイルに分割されることがあります。

ルートの代わりにコンテキストを使用してビューを照合する場合。view_defaultsview_configを使用すると、かなり良いことができます。

view_defaultsクラスにいくつかのデフォルトをview_config設定し、存在する場合はによって提供されるデフォルトを使用して、defにさらにいくつかの構成を設定しますview_defaults

于 2012-07-05T10:59:26.767 に答える