(機械翻訳)Pyramid 1.1の新機能¶
この記事では、Pyramidバージョン1.1の新機能について、その前身であるapp: Pyramid 1.0と比較して説明します。また、Pyramid 1.1に追加された2つのバージョンと廃止予定の間の後方互換性や、ソフトウェア依存の変更や著しいドキュメントの追加についても説明しています。
用語の変更¶
ピラミッドのドキュメントで使用される "テンプレート"という用語は、"パスタテンプレート"と"レンダリングテンプレート"(レンダリングエンジンで作成されたテンプレート、つまりMako、Chameleon、Jinjaなど)の両方を指します。 "Paster templates "は"scaffolds "と呼ばれますが、"rendered templates "の名前は"テンプレート
主な機能の追加¶
Pyramid 1.1の主な機能の追加は次のとおりです。
- `` request.response``属性のサポート。
- 新しいビューイントロスペクション機能: `` paster pviews``。
- "静的"ルートのサポート。
- デフォルトのHTTP例外ビュー。
- `` http_cache``表示設定パラメータは、PyramidにHTTPキャッシュヘッダを設定させます。
- :app: `Pyramid`環境で動作するスクリプトを書くのを容易にする機能。
`` request.response``¶
:class: pyramid.request.Request`クラスのインスタンスに `response``属性が追加されました。
`` request``としてコール可能なビューに渡されるオブジェクトは、class: pyramid.request.Request`のインスタンスです。 ` request.response``はクラスのインスタンスです:class: pyramid.response.Response。 :term: renderer`で設定された呼び出し可能な呼び出しを表示すると、この応答オブジェクトがPyramidルータに返されます。したがって、レンダラを使用するビュー呼び出し可能コードでは、 ` request.response.content_type``(返される前、レンダラに辞書など)のようなレスポンス属性を設定できます。これは、コール可能なビューのHTTP戻り値に影響します。
`` request.response``はレンダラーを使用するように構成されていないビュー呼び出し可能コードでも使用できます。たとえば、ビュー呼び出し可能な関数は `` request.response.body = '123'; return request.response``です。しかし、 `` request.response``で生成されるレスポンスオブジェクトは、HTTPレスポンスに影響を与えるためにレンダラが動作していないときには必ず返されなければなりません(レスポンスはグローバルなレスポンスではなく、それに対する変更は、何らかの形で別々に返されるレスポンスオブジェクトにマージされません)。
`` request.response``オブジェクトは遅れて作成されるため、その導入はパフォーマンスに悪影響を与えません。
`` paster pviews``¶
- `` paster pviews``という新しいパスタコマンドが追加されました。このコマンドは、指定されたパスについて一致する可能性のあるビューの概要を出力します。詳細は、ref: `display_matching_views`セクションを参照してください。
静的ルート¶
- Configuratorの `` add_route``メソッドは、 `` static``引数を受け付けるようになりました。この引数が `` True``の場合、要求が処理されたときに追加されたルートは照合のために決して考慮されません。代わりに、 `` route_url``と `` route_path``を使ってURLを生成するだけに便利です。詳細は、ref: `static_route_narr`を参照してください。
デフォルトのHTTP例外ビュー¶
インタフェース:class: pyramid.interfaces.IExceptionResponse`のデフォルトの例外ビューがデフォルトで登録されるようになりました。つまり、mod: `pyramid.httpexceptions`( `HTTPFound``など)からインポートされた例外クラスのインスタンスをビューコード内から呼び出すことができます。呼び出されると、この例外ビューは応答に例外をレンダリングします。
この機能の設定を可能にするために、:term: Configurator`は、 exceptionresponse_view``というキーワード引数を追加できるようになりました。デフォルトでは、この引数には、HTTP例外が発生したときに使用されるデフォルトの例外ビュー関数が設定されます。この値に ` None``が渡されると、HTTP例外の例外ビューは登録されません。 `` None``を渡すと、HTTP例外をPyramid 1.0の例外に戻します(例外はterm: `middleware`とWSGIサーバに伝播します)。
`` http_cache``¶
新しい値 `` http_cache``は:term: `view configuration`パラメータとして使うことができます。
ビュー設定に `` http_cache``値を指定すると、関連するview呼び出し可能で生成されたレスポンスの `` Expires``と `` Cache-Control``ヘッダーが変更されます。 `` http_cache``の値は次のいずれかです:
- 非ゼロの整数。ゼロ以外の整数の場合、秒数として扱われます。この秒数は、このビューを呼び出すリクエストに対するレスポンスの `` Expires``ヘッダと `` Cache-Control:max-age``パラメータを計算するために使用されます。たとえば、 `` http_cache = 3600``は、リクエストしているブラウザに「この応答を1時間キャッシュしてください」と指示します。
- `` datetime.timedelta``インスタンスです。 `` datetime.timedelta``インスタンスの場合、秒数に変換され、その秒数が `` Expires``ヘッダーと `` Cache-Control:max-age ''を計算するために使われますこのビューを呼び出す要求への応答のパラメータ。例: `` http_cache = datetime.timedelta(days = 1) ``は、リクエストしているブラウザに「この応答を1日キャッシュしてください」と指示します。
- 0( `` 0``)。値がゼロの場合、このビューからのすべての応答に存在する `` Cache-Control``と `` Expires``ヘッダーは、クライアントブラウザのキャッシュ(および任意の中間キャッシュ)にレスポンスをキャッシュしないように構成されます。
- 2タプル。それが2つのタプル(例えば `` http_cache =(1、{'public':True)) ``)の場合、タプルの最初の値は非ゼロの整数か `` datetime.timedelta``インスタンスです。どちらの場合も、この値はレスポンスをキャッシュする秒数として使用されます。タプルの2番目の値は辞書でなければなりません。辞書にある値は `` Cache-Control``レスポンスヘッダへの入力として使われます。例えば、 `` http_cache =(3600、{'public':True})は ``キャッシュを1時間意味し、 `` public``をレスポンスのCache-Controlヘッダに追加します。 `` webob.cachecontrol.CacheControl``インターフェースでサポートされているすべてのキーと値を辞書に追加することができます。 `` {'public':True} ``を提供することは、 `` response.cache_control.public = True``を呼び出すことと等価です。
`` http_cache``として非タプルの値を与えることは、あなたのビューのボディ内で `` response.cache_expires(value) ``を呼び出すことと同じです。
`` http_cache``として2タプルの値を与えることは、あなたのビューのボディ内で `` response.cache_expires(value [0]、** value [1]) ``を呼び出すのと同じです。
`` Expires``ヘッダーに影響を与えず、 `` Cache-Control``ヘッダにのみ影響を与えたい場合は、 `` None``の最初の要素を持つ `` http_cache``としてタプルを渡し、例: ``(None、{'public':True}) ``。
環境設定 `` PYRAMID_PREVENT_HTTP_CACHE`と設定ファイルの値 `` prevent_http_cache``は同義で、プロセス内でグローバルにPyramidの `` http_cache``機構によってHTTPキャッシュヘッダが設定されないようにします。 :ref: influencing_http_caching`と:ref: prevent_http_caching`を参照してください。
マイナー機能追加¶
引数に指定されているpaste iniファイルセクション名がPyramid WSGIアプリケーションではない場合でも、 `` paster pshell``を呼び出すことが可能になりました。シェルは劣化モードで動作し、ユーザーに警告します。 "Pyramid Projectの作成"ドキュメンテーションセクションの"The Interactive Shell "を参照してください。
`` paster pshell``、 `` paster pviews``、 `` paster proutes``コマンドはfunc: pyramid.paster.bootstrap`を使用します。通常の ` paster {pshell | proutes | pviews} development.ini``を実行するだけで、ほとんどの場合に実行されます良い行い。
現在、アプリケーションの.ini設定ファイルに `` [pshell] `セクションを追加することができます。これは、pshellセッションで使用できるグローバル名に影響します。参照:ref: `extend_pshell`を参照してください。
:meth: pyramid.config.Configurator.scan`メソッドは ** kw``引数を増やしました。 ` kw``引数は、ピラミッドが作成したVenusianの `` Scanner``オブジェクトに渡すキーワード引数の集合を表します。 ( `` Scanner``の詳細については:term: `Venusian`のドキュメントを参照してください)。
新しいリクエストプロパティ: `` json_body``。このプロパティは、リクエスト本体のJSONでデコードされた変形を返します。要求の本文が整形式JSONでない場合、このプロパティは例外を発生させます。
`JSONP <http://en.wikipedia.org/wiki/JSONP> `_ renderer。詳細はref: `jsonp_renderer`を参照してください。
新しい認証ポリシー::class: pyramid.authentication.SessionAuthenticationPolicy:セッションを使用してクレデンシャルを保存します。
func: `pyramid.httpexceptions.exception_response`という名前の関数は、HTTP整数ステータスコードを使用してHTTP例外応答オブジェクトを作成するために使用できるショートカットです。
func: pyramid.url.resource_url`や:meth: pyramid.request.Request.resource_url`のように、 `` resource_url(context、request、1、2)
に渡された整数とロング
1``と `` 2``が `` elements``です)は、暗黙的に結果の文字列に変換されます。以前は整数またはlongを要素として渡すと、TypeErrorが発生します。`` pyramid_alchemy`` scaffoldは、 `` query.filter_by``ではなく `` query.get``を使用してアイデンティティマップのキャッシュをより有効に活用します。
`` pyramid_alchemy``足場には単体テストがあります。
a:func: pyramid.i18n.make_localizer APIを追加しました。
a:class: `pyramid.events.NewRequest`イベントサブスクライバによって生成された例外は、例外ビューで捕捉できるようになりました。
Pyramidが例外ビューからForbidden例外を発生させた理由についての情報を得ることができるようになりました。各株式承認ポリシー(:meth: pyramid.interfaces.IAuthorizationPolicy.permits)の` permits``メソッドによって返された ACLDenied``オブジェクトは、 result``属性としてForbidden例外に付加されました。したがって、[禁止された例外]ビューを作成した場合、ACE、ACL、アクセス許可、および要求に含まれるプリンシパルが、たとえば次のように表示されます。 ` context.result.permission``、 `` context.result.acl``などの禁止された例外ビューのロジック内にあります。
:class: pyramid.authentication.AuthTktAuthenticationPolicy`を設定するときに timeout``が reissue_time``よりも低くなるのを明示的に禁止しないでください(以前の設定では `ValueError``それは許可されていますが、通常は無意味ですが)。無意味な設定を許可することで、コードを理解しやすくなり、必要なテストが少なくなりました。
:class: pyramid.request.Request`クラスはclass: pyramid.response.Response`を指す `` ResponseClass``属性を持つようになりました。
:class: pyramid.response.Response`クラスはclass: pyramid.request.Request`を指す `` RequestClass``インターフェースを持っています。
レンダラーが使用されていなくても、呼び出し可能なピラミッドビューから任意のオブジェクトを返すことができるようになりました。class: pyramid.interfaces.IResponse`は、新しい:meth: `pyramid.config.Configurator.add_response_adapter APIです。ドキュメント:ref: `using_iresponse`のHooksの章を参照してください。
Pyramidルータはデフォルトで、WSGI応答を返すときに応答オブジェクトの `` __call__``メソッドを呼び出すようになりました。これは、とりわけ、WebObから継承された `` conditional_response``の機能応答オブジェクトが正しく動作するようになりました。
新しいメソッド:meth: pyramid.request.Request.is_response。このメソッドは、:func: `pyramid.view.is_response`関数の代わりに使用する必要があります。これは廃止予定です。
:class: pyramid.exceptions.NotFound`はclass: pyramid.httpexceptions.HTTPNotFound`のエイリアスになりました。
:class: pyramid.exceptions.Forbidden`はclass: pyramid.httpexceptions.HTTPForbidden`の別名になりました。
`` mako.preprocessor``設定ファイルのパラメータを追加しました。 MakoプリプロセッサをPythonの呼び出し可能な名前またはPythonの点名として指定することができます。根拠については、https://github.com/Pylons/pyramid/pull/183を参照してください。
新しいAPIクラス::class: pyramid.static.static_view。これは、(現在廃止されている)class: pyramid.view.static`クラスに取って代わるものです。 :class: `pyramid.static.static_view`は、デフォルトでは、要求の path_info``属性の結果としてドキュメントを提供します。属性は subpath``属性ではありません(逆はtrueです:class: pyramid .view.static`、それでもなおです)。 :class: pyramid.static.static_view`は静的ビューを古い非推奨バージョンと同じように動作させたいときに使う `use_subpath``フラグを公開します。
新しいapi関数:func: `pyramid.scripting.prepare`が追加されました。それは設定ファイル引数の代わりに要求とレジストリを受け入れ、同じ目的のために使用される:func: `pyramid.paster.bootstrap`の下位レベルのアナログです:
from pyramid.scripting import prepare info = prepare(registry=myregistry) request = info['request'] print request.route_url('myroute')
新しいAPI関数func: pyramid.scripting.make_request`が追加されました。結果として得られるリクエストは ` registry``属性を持ちます。 func: pyramid.scripting.prepare`や:func: pyramid.paster.bootstrap`(どちらも引数としてリクエストを受け付けます)と組み合わせて使用することを意図しています:
from pyramid.scripting import make_request request = make_request('/')
新しいAPI属性:attr: pyramid.config.global_registries`は、現在のプロセスにロードされたすべてのPyramidレジストリへの参照を含むmether: pyramid.config.Configurator.make_wsgi_app`という反復可能オブジェクトです。最後にロードされたレジストリを含む `` last``属性もあります。これはスクリプティング機器で使用され、イントロスペクションに使用できます。
:attr: pyramid.renderers.null_renderer`オブジェクトをAPIとして追加しました。 nullレンダラーは、ビュー構成のレンダラー= ``引き数への入力として高度な統合のケースで使用できるオブジェクトです。 nullレンダラーをビューレンダラー引数として使用すると、Pyramidはビューの呼び出し可能な結果をResponseオブジェクトに変換することを回避します。これは、Pyramidルーターが使用しているコンテキスト外で、ビュー構成とルックアップマシンを再利用する場合に便利です。 (この機能は ` pyramid_rpc``パッケージで消費するために追加されました。このパッケージは、まさにこのようにルータのコンテキスト外でビューの設定と参照を使用します)。
後方の非互換性¶
PyramidはPython 2.4をサポートしなくなりました。 Pyramid 1.1+を実行するには、Python 2.5以上が必要です。しかしPyramidはPython 3のどのバージョンでも動作しません。
Pyramidルータは、デフォルトでは、view callablesから返されたレスポンスオブジェクトが:class: pyramid.interfaces.IResponse`インタフェースを実装することを期待しています。このインタフェースのPyramid 1.0バージョンとは異なり、IResponseを実装するオブジェクトは、現在、 ` environ``と `` start_response``を受け入れ、 `` app_iter`` iterableを返す `` __call__``メソッドを定義しなければなりませんもの。以前は、3つのWebOb `` app_iter``、 `` headerlist``、および `` status``属性をレスポンスとして持つオブジェクトを返すことができました。これは後方互換性がありません。 IRISponseにアダプターを登録することで、ビュー呼び出し可能オブジェクトから戻ってきたオブジェクトの型から下位互換性を取り戻すことができます。ドキュメント:ref: `using_iresponse`のHooksの章を参照してください。
:class: pyramid.interfaces.IResponse`インターフェースがはるかに広範囲になりました。これまでは ` app_iter``、 `` status``、 `` headerlist``だけを定義していました。これは基本的に `` webob.Response`` APIを直接ミラーリングすることを意図しています。これは多くのメソッドと属性を持っています。
`` HTTPFound``、 `` HTTPMultipleChoices``、 `` HTTPMovedPermanently``、 `` HTTPSeeOther``、 `` HTTPUseProxy``、および `` HTTPTemporaryRedirect``という名前の:mod: pyramid.httpexceptions`クラスは `` detail``ではなく `` location``を最初の位置引数として使用します。これは、pyramid.httpexceptions.HTTPFound(location = 'http // foo') ``を返すのではなく、 `` pyramid.httpexceptions.HTTPFound( 'http:// foo') ``を返すなど、後者はもちろん作業を続けるでしょう)。
ピラミッドルータは、エラー時に:mod: repoze.bfg`で書かれたアプリケーションとの下位互換性のためにビュー関連の例外を捕捉したときに、キー environ ['repoze.bfg.message'] `に値を設定しようとしました取り扱い。これは、次のようなコードを使用してこれを行いました:
# "why" is an exception object try: msg = why[0] except: msg = '' environ['repoze.bfg.message'] = msg
値 `` environ ['repoze.bfg.message'] ``の使用は、Pyramid 1.0で廃止されました。私たちの定める方針は、完全な2つのメジャーリリースに対する非推奨の機能を削除しないことです。このコードはもともとPyramid 1.2で削除される予定でした。しかし、 `` repoze.bfg.message``値を計算することは、野生で見つかった少なくとも1つのバグ(https://github.com/Pylons/pyramid/issues/199)のソースであり、下位互換性を維持し、バグを修正するための完全な方法です。したがって、このリリースでは値を設定するコードは削除されています。環境におけるこの値の存在に依存する例外ビューのコードは、要求の `` exception``属性(例えば、 `` request.exception [0] ``)を使用して、 `` request .environ ['repoze.bfg.message'] ``。
廃止と行動の相違¶
注釈
Python 2.7以降では、古いバージョンのPyramidからアプリケーションを移植する際に、Pyramidが発行する廃止予定の警告を表示するために、Pythonインタプリタに正しい警告フラグを渡す必要があります。 UNIXの場合、 `` PYTHONWARNINGS = all $ VENV / bin / paster ''のように、 `` paster serve``を呼び出すために使用する すべて ``の値を持つ `` PYTHONWARNINGS``環境変数を `` paster serve '開発.ini
。 Python 2.5と2.6は、デフォルトで廃止予定の警告を表示するので、これは不要です。すべての非推奨警告がコンソールに出力されます。
:class: pyramid.view.static`クラスは新しい:class: pyramid.static.static_view`クラスのために推奨されなくなりました。非推奨警告は使用時に発生します。 `` use_subpath = True``引数で:class: `pyramid.static.static_view`への参照で置き換えるべきです。
`` paster pshell``、 `` paster proutes``、 `` paster pviews``コマンドは、前の2つではなく `` / path / to / config.ini#sectionname``の形式で引数を取るようになりました - 引数の `` /path/to/config.ini sectionname``のスペルです。 ``#sectionname``は省略できます。この場合、 ``#main``が仮定されます。
デフォルトのMakoレンダラは、式タグ内のすべてのHTMLをエスケープするように設定されました。これは、非正規化された入力をユーザーから表示することによるXSS攻撃を防ぐのに役立ちます。ユーザーのテンプレートでこの動作を元に戻すには、 'n'フィルタを使用して式をフィルタリングする必要があります。
${ myhtml | n }.
https://github.com/Pylons/pyramid/issues/193を参照してください。
`` request.response *
属性へのすべての代入を非推奨にしました(例えば `` request.response_content_type = 'foo'``は廃止予定です)。レスポンスへの影響をフレームワークで考慮した、割り当て可能なリクエスト属性の代入と突然変異は非難されました: `` response_content_type
、 `` response_headerlist``、 `` response_status``、 `` response_charset``、 `` response_cache_for`` 。後でレンダリング機構が検出するためにこれらをリクエストオブジェクトに割り当てるのではなく、 `` request.response``にアクセスして作成したResponseオブジェクトの適切なAPIを使用する必要があります(例えば `` request.response_content_type = 'abc' ``は `` request.response.content_type = 'abc'``に変更する必要があります)。ビュー関連のパラメータを:meth: pyramid.config.Configurator.add_route`に渡すことは廃止されました。以前は、コンフィグレータの ` add_route``メソッドに渡された `` view * ``パラメータのセットを使って、ビューをルートに接続することが許可されていました。これは、後で `` add_view``を呼び出す必要性に代わる短縮形でした。たとえば、以下のことを行うには有効でした(しばしば推奨されます):
config.add_route('home', '/', view='mypackage.views.myview', view_renderer='some/renderer.pt')
`` view * ``引数を `` add_route``に渡すことは、ルートの `` route_name``パラメータを使って:meth: `pyramid.config.Configurator.add_view`を介してビューを定義済みのルートに接続することを推奨しています。その結果、上記の例は今すぐ綴られるべきです:
config.add_route('home', '/') config.add_view('mypackage.views.myview', route_name='home', renderer='some/renderer.pt')
この廃止は、IRCで見られる混乱を減らし、(最終的に)文書化の負担を軽減するために行われました。ビュー関連のパラメータが `` add_route``に渡されると非推奨警告が発行されるようになりました。
参考
GitHubの `issue#164 'も参照してください。 <https://github.com/Pylons/pyramid/issues/164> `_。
"traverser "の `` __call__`メソッド(例:class: pyramid.interfaces.ITraverser:class:` pyramidのインスタンスを実装するオブジェクト)に `` environ``辞書を渡します。 traversal.ResourceTreeTraverser`)を `` request``引数として使用すると、非推奨警告が発行されるようになりました。コンシューマーコードは `` request``オブジェクトを渡すべきです。環境を渡すことが許可されているという事実は、 `` repoze.bfg`` 1.1以降、ドキュメンテーション非難されており、この機能は将来のバージョンでは完全に削除されるでしょう。
:class: pyramid.request.Request`オブジェクトの以下の(文書化されていない、辞書のような)メソッドは非難されました: __contains__`、` __delitem__`、` __getitem__`、` __iter__` `` iteritems``、 `` itervalues``、 `` keys``、 `` pop``、 `` iteritems``、 `` iteritems``、 `` popitem`、` setdefault`、` update`、` values``のようなものです。これらのメソッドを使用すると、非推奨警告が発行されます。これらのメソッドは、 ` repoze.bfg`` 1.1(BFG 1.0以前ではenvironオブジェクトが期待される要求オブジェクトを現在期待しているコード)の内部互換性のために追加されました。将来のバージョンでは、これらのメソッドは完全に削除されます。
リクエストがレンダラーを使用するビューで使用される場合は、カスタムリクエストファクトリが `` response``属性(または"reified " / lazyプロパティ)を持つリクエストオブジェクトを返すようになりました。この `` response``属性はクラス:class: `pyramid.response.Response`のインスタンスでなければなりません。
JSONおよび文字列レンダラーファクトリは、 `` request.response_content_type``ではなく `` request.response.content_type``に割り当てられます。
各ビルトインレンダラーファクトリは、レスポンスのコンテンツタイプをレスポンスのデフォルトのコンテンツタイプと比較することによってレスポンスのコンテンツタイプを変更する必要があるかどうかを判断します。コンテンツタイプがデフォルトのコンテンツタイプ(通常 `` text / html``)である場合、レンダラーはコンテンツタイプをJSONおよび文字列レンダラーのそれぞれに対して `` application / json``または `` text / plain``に変更します。 。
:func: pyramid.wsgi.wsgiapp2`は、下位アプリケーションの SCRIPT_NAME``と PATH_INFO``を修正する方法を少し違った方法で使います。結果として、それらの値は、下流のアプリケーションの観点から若干異なるかもしれません(例えば、 ` SCRIPT_NAME``は後にスラッシュを持たないでしょう)。
これまで::class: pyramid.request.Request:class:` webob.request.Request`から継承し、 `` __getattr__``、 `` __setattr__``、 `` __delattr__``自体を実装して、 adhoc attr "要求の属性が環境内に格納されているWebObの動作。さて、:class: pyramid.request.Request`は:class: webob.request.Request`の代わりに(もっと最近の):class: webob.request.BaseRequest`を継承しています。 :class: `pyramid.request.Request`はもはや独自の __getattr__`、` __setattr__``または `__delattr__``を実装しません。
deprecated:func: pyramid.view.is_response`関数は、(新しく追加された):meth: pyramid.request.Request.is_response`メソッドを支持します。オブジェクトが本当に有効な応答オブジェクトであるかどうかを判断するには、レジストリにアクセスする必要があります。これは、要求属性としてのみ簡単に利用できます。 :func: `pyramid.view.is_response`関数は、それが削除されるまでは動作しますが、現在、いくつかの(非常に珍しい)状況下で誤った答えを返す可能性があります。
:class: pyramid.response.Response`は webob.response.Response``の*サブクラス*になりました(レスポンス生成を高速化するために:class: pyramid.interfaces.IResponse`インタフェースを直接実装するためです) )。
`` pyramid.httpexceptions``(例えば `` HTTPNotFound``)からインポート可能な"例外応答"オブジェクトは、 `` webob.exc``に実際に存在するクラスのインポートエイリアスではなくなりました。代わりに、 `` webob.exc``例外応答オブジェクトをほぼ完全にミラーリングしてエミュレートする独自の例外クラスをモジュール内に定義しました。詳細については、Design Defenseの章の:ref: `http_exception_hierarchy`を参照してください。
サブディレクトリに解決された静的ビューを表すURLにアクセスすると、そのサブディレクトリの `` index.html``は適切に処理されません。代わりに、 `` / subdir``へのリダイレクトが発行されます。これは修正され、静的ビュー内の `` index.html``を含むサブディレクトリにアクセスすると、index.htmlが正しく返されます。
参考
GitHubの `issue#67 <https://github.com/Pylons/pyramid/issues/67> `_。
`` pyramid.config.Configurator.set_renderer_globals_factory``メソッドと `` renderer_globals``のコンストラクタコンストラクタパラメータは廃止されました。 BeforeRenderイベントを使用するには、この機能を使用してコードを変換する必要があります。フックの章のref: `beforerender_event`を参照してください。
Pyramid 1.0では、:class: `pyramid.events.subscriber`ディレクティブは、複数のインタフェースオブジェクトをそのコンストラクタに渡すとドキュメンテーションとは逆の動作をします。たとえば、次のリスナーが登録されているとします。
@subscriber(IFoo, IBar) def expects_ifoo_events_and_ibar_events(event): print event
イベントの章docsは、リスナーが登録され、 `` IFoo``と `` IBar``イベントの両方を聞くと主張しました。代わりに、IObjectEventが発行され、オブジェクトインタフェースが "IFoo"で、イベントインタフェースが "IBar"であった場合にのみ呼び出される"オブジェクトイベント"サブスクライバを登録しました。
この動作はドキュメントと一致するようになりました。オブジェクトイベントサブスクライバを登録するために1.0の `` subscriber``ディレクティブのバグの振る舞いに頼っていた場合、オブジェクトイベントのサブスクライバを登録することを示すシーケンスを渡す必要があります。例えば::
@subscriber([IFoo, IBar]) def expects_object_event(object, event): print object, event
1.0では、class: pyramid.events.BeforeRender`イベントサブスクライバが、イベントオブジェクトの __setitem__``メソッドまたは update``メソッドを介してレンダラーグローバルディクショナリにすでに存在しているキーで値を追加した場合、 ` KeyError``が発生しました。コンフィギュレータの"add_renderer_globals "機能の廃止により、既に存在していたレンダラグローバルディクショナリの既存の値を上書きする方法はありませんでした。さて、イベントオブジェクトは、 `` __setitem__``または `` update``が呼び出されたとき(新しい `` setdefault``メソッドと同様に)、グローバルディクショナリにすでにある古い値を上書きします古い辞書。その結果、他のサードパーティの加入者との最大限の相互運用性を実現するために、BeforeRenderサブスクライバとして使用する予定のイベントサブスクライバを書くと、サブスクライバコードが必要になります( `` .get``または ``____ __contains__``オーバーライド値を設定する前に、レンダラーグローバルディクショナリに値が存在しないことを確認します。
:meth: pyramid.config.Configurator.add_route`メソッドは:meth: pyramid.config.Configurator.commit`への中間呼び出しなしで、同じルートを持つ2つのルートを追加することを許可しました。起動時に `` ConfigurationError``が `` add_route``に関連しているように見える場合は、a)すべてのルート名が一意であることを確認するか、またはb) `` config.commit以前に追加された名前の名前を持つ第2のルートを追加する前に、または `` autocommit``モードで動作するConfiguratorを使用してください。
依存関係の変更¶
- Pyramidは、テストではそのリリースのバグ修正に依存しているため、term: WebOb`> = 1.0.2に依存しています:" SCRIPT_NAME` がないWSGI環境の処理を修正しました。 (WebOb 1.0.2と1.0.3は実質的にブラウンバックのリリースであったため、実際には1.0.4以上のバージョンを使用しているはずです)。
ドキュメントの機能拡張¶
- "Command-Line Pyramid "章に:ref: `writing_a_script`というセクションを追加しました。
- :ref: `bfg_wiki_tutorial`が少し更新されました。
- :ref: `bfg_sql_wiki_tutorial`が少し更新されました。
- pyramid.interfaces.IAuthenticationPolicy`と:class: pyramid.interfaces.IAuthorizationPolicy`パブリックインターフェースを作成しました:mod: pyramid.authentication`と:mod: pyramid.authorization` APIドキュメント
- 公開された各インタフェースの関数定義を:mod: `pyramid.interfaces`にレンダリングします。
- 不足しているドキュメントの参照を:meth: pyramid.config.Configurator.set_view_mapper`に追加し、参照:ref: using_a_view_mapper`というドキュメントのセクションを参照してください。
- 環境変数と `` .ini``ファイル設定章にセクションを追加しました:ref: `adding_a_custom_setting`というナラティブドキュメンテーションセクション。
- :term: multidict`をclass: pyramid.interfaces.IMultiDict`として追加しました。
- ref: `static_route_narr`という新しい"静的"ルート機能に関するセクションをURLディスパッチnの章に追加しました。
- func: `pyramid.httpexceptions.exception_response`のAPIドキュメントを追加しました。
- Func: pyramid.httpexceptions.exception_response`の説明を含むビューの説明の章にref: http_exceptions`セクションを追加しました。
- class: `pyramid.authentication.SessionAuthenticationPolicy`のAPIドキュメントを追加しました。