(機械翻訳)Pyramid 1.7の新機能

この記事では、:app: Pyramid`バージョン1.7の新機能について説明しました:app: Pyramid` 1.6。また、app: Pyramid 1.7に追加された2つのバージョンと廃止予定との間の後方互換性も文書化されています。

後方の非互換性

  • class: pyramid.authentication.AuthTktAuthenticationPolicy`のデフォルトハッシュアルゴリズムが md5``から sha512``に変更されました。認証ポリシーを使用していて、 ` md5``を引き続き使用する必要がある場合は、明示的に `` hashalg = 'md5``を設定してください。

    あなたのアプリケーションで `` hashalg``オプションを現在指定していない場合、この変更は既存の認証チケット(および関連するCookie)が有効ではなくなり、ユーザーはログアウトされ、アカウントに再度ログインする必要があります。

    この変更により、app: Pyramid 1.4以降、DeprecationWarningが発行されています。

    https://github.com/Pylons/pyramid/pull/2496を参照してください。

  • Python 2.6と3.2はPyramidではサポートされなくなりました。 https://github.com/Pylons/pyramid/issues/2368およびhttps://github.com/Pylons/pyramid/pull/2256を参照してください。

  • :func: `pyramid.session.check_csrf_token`関数は、リクエストのクエリ文字列のcsrfトークンを検証しなくなりました。ヘッダーとリクエストボディのみがサポートされています。 https://github.com/Pylons/pyramid/pull/2500を参照してください。

  • :meth: `pyramid.config.Configurator.set_default_permission`を介して設定されたグローバル権限は、もはや例外ビューに影響を与えません。権限は強制的にビューに明示的に設定する必要があります。 https://github.com/Pylons/pyramid/pull/2534を参照してください。

機能の追加

  • 新しい:ref: view_derivers`という概念がPyramidに追加され、フレームワークの作成者は要素を標準のPyramidビューパイプラインに挿入し、アプリケーション内のすべてのビューに影響を与えることができます。これはデコレータに似ていますが、 ` config.add_view``に渡されるオプションにアクセスでき、ビューからの生のレスポンスやセキュリティチェックの前にパイプラインの他のステージに影響を与える可能性があります。 https://github.com/Pylons/pyramid/pull/2021を参照してください。

  • `` require_csrf``ビューオプションを追加しました。このオプションは、RFC2616で定義されている安全でないメソッドを使って要求に対するCSRFチェックを強制します。 CSRFチェックが失敗した場合、 `` BadCSRFToken``例外が発生し、例外ビュー(デフォルトの応答は `` 400 Bad Request``です)によって捕捉されます。このオプションは、非推奨の `` check_csrf``ビュー述語の代わりに使用されるべきです。この述語は通常、キャッチ可能な例外の代わりに予期しない `` 404 Not Found``応答をクライアントに送ります。 See:ref: auto_csrf_checkinghttps://github.com/Pylons/pyramid/pull/2413およびhttps://github.com/Pylons/pyramid/pull/2500

  • `` require_csrf = True``ビューオプションで使用されるCSRFチェックを設定するための新しいメソッド:meth: pyramid.config.Configurator.set_csrf_default_options`を追加しました。このメソッドを使用すると、アプリケーションのすべてのビューでCSRFチェックをグローバルに有効にすることができます。これは、Pyramid上に構築されたウェブサイトのための良いデフォルトと見なされるべきです。これらのビューに対して ` require_csrf = False``を設定することで、ビュー単位でCSRFチェックをオプトアウトすることができます。 See:ref: `auto_csrf_checking`とhttps://github.com/Pylons/pyramid/pull/2413とhttps://github.com/Pylons/pyramid/pull/2518

  • 要求の起点/参照元をチェックし、現在の `` request.domain``と一致することを確認する追加のCSRF検証を追加しました。この特定のチェックは、HTTPS経由でサイトにアクセスする場合にのみ有効です。そうしないと、ブラウザが常に必要な情報を送信するとは限りません。この追加のCSRF検証に失敗した場合、 `` BadCSRFOrigin``例外が発生し、例外ビュー(デフォルトの応答は `` 400 Bad Request``です)によって捕捉される可能性があります。 `` pyramid.csrf_trusted_origins``を許可するドメイン名のリスト(非標準ポートの場合はポート付き)に設定することにより、追加の許可されたオリジンを設定することができます。サブドメインはドメイン名の前に `` .``が付いていなければ許されません。 https://github.com/Pylons/pyramid/pull/2501を参照してください。

  • リクエストのドメインに対してオリジンまたはリファラーヘッダを検証するための新しい:func: pyramid.session.check_csrf_origin APIを追加しました。 https://github.com/Pylons/pyramid/pull/2501を参照してください。

  • :class: pyramid.httpexceptions.HTTPException`のサブクラスは、クライアントの Accept``ヘッダに最もよくマッチするものを考慮に入れ、要求されたものに応じて `` text / html``、 `` application / json``または `` text / plain``です。 `` * / * ``のデフォルトは `` text / html``ですが、 `` application / json``が明示的に言及されると、有効なJSON応答を受け取るようになります。 https://github.com/Pylons/pyramid/pull/2489を参照してください。

  • :class: pyramid.events.BeforeTraversal`という新しいイベントと、interface:class: pyramid.interfaces.IBeforeTraversal`が導入されました。このイベントは、ルータ内でのトラバーサルの開始前にリスナーに通知します。参照:ref: router_chapterhttps://github.com/Pylons/pyramid/pull/2469https://github.com/Pylons/pyramid/pull/1876を参照してください。

  • 新しいメソッド:meth: pyramid.request.Request.invoke_exception_view:例外ビューを呼び出して応答を返すために使用できます。これは、 "EXCVIEW"トゥイーンのコンテキスト外で例外ビューをレンダリングする場合に便利です。ここでは、リクエストをより詳細に制御する必要があります。 https://github.com/Pylons/pyramid/pull/2393を参照してください。

  • :meth: `pyramid.config.Configurator.set_default_permission`を介して設定されたグローバル権限は、もはや例外ビューに影響を与えません。権限は強制的にビューに明示的に設定する必要があります。 https://github.com/Pylons/pyramid/pull/2534を参照してください。

  • 要求パラメタ述語のキーに先行する `` = ``を許可します。たとえば、 `` '= abc = 1'``は `` request.params [' = abc '] ==' 1'``と同等です。 https://github.com/Pylons/pyramid/pull/1370を参照してください。

  • .iniファイルのロギングセクションに ``%(LOGGING_LOGGER_ROOT_LEVEL)s``のような変数置換を許可し、 `` pserve``コマンドラインからこれらの変数を設定します。

    `` pserve development.ini LOGGING_LOGGER_ROOT_LEVEL = DEBUG``

    このサポートは:func: pyramid.paster.setup_logging`の新しい `global_conf``オプションのおかげです。 https://github.com/Pylons/pyramid/pull/2399を参照してください。

  • :attr: pyramid.tweens.EXCVIEW tweenは、それを処理するための例外ビューが見つからなければ元の例外を再起動します。これにより、例外が別のトゥイーンまたはミドルウェアによって上流側で処理されるようになります。 https://github.com/Pylons/pyramid/pull/2567を参照してください。

廃止

  • `` check_csrf``ビュー述語は非推奨です。新しい `` require_csrf``オプションまたは `` pyramid.require_default_csrf``の設定を使って、:class: `pyramid.exceptions.BadCSRFToken`例外が発生するようにしてください。 https://github.com/Pylons/pyramid/pull/2413を参照してください。
  • Python 3.3のサポートはPyramid 1.8で削除されます。 https://github.com/Pylons/pyramid/issues/2477

足場の強化

  • SQLAlchemyのセッション管理に関してより現代的なベストプラクティスを示す「錬金術」足場の完全なオーバーホールと、よりモジュラーな構成へのアプローチ、ルートを別のモジュールに分けて:meth: ピラミッドの使い方を説明する。 config.Configurator.includehttps://github.com/Pylons/pyramid/pull/2024を参照してください。

ドキュメントの機能拡張

このドキュメントで使用されているパッケージやツールの大規模な見直しはhttps://github.com/Pylons/pyramid/pull/2468で完了しました。要約は次のとおりです。

  • すべてのドキュメントは `` easy_install``の代わりに `` pip``を使うことを推奨しています。
  • インストール文書では、ユーザがPython 3.4以降を使用して、仮想環境を作成するための `` python3 -m venv``ツールにアクセスできるようになりました。
  • チュートリアルでは、 `` nose``と `` coverage'`の代わりに `` py.test``と `` pytest-cov``を使います。
  • チュートリアルとそのsrcファイルだけでなく、足場への更なるアップデート。

`` alchemy``のオーバーホールに加え、:ref: `bfg_sql_wiki_tutorial`チュートリアルの全面的な見直しが行われ、Pyramidを使ったSQLAlchemyの使い方についてより現代的な機能を紹介し、新しいプロジェクトの出発点を提供しました。詳細についてはhttps://github.com/Pylons/pyramid/pull/2024をご覧ください。ハイライトは:

  • グローバルな `` DBSession``なしの新しいSQLAlchemyセッション管理。リクエストごとの `` request.dbsession``プロパティに置き換えられました。
  • 簡単な認証をアプリケーション内で迅速にブートストラップする方法を示す新しい認証の章。
  • 認可は、単純なグループレベルの認可の上にオブジェクトレベルの認可を示すルートごとのコンテキストファクトリの使用を示すために改訂されました。ページの編集を所有者だけに制限したいのですが、それを事前に把握できませんでしたか?どうぞ!
  • ユーザーとグループは、チュートリアル固有のグローバル変数ではなく、データベースに格納されます。
  • ユーザパスワードは `` bcrypt``を使って保存されます。