カテゴリー別アーカイブ: Pyramid

Pyramidのセッション機能を使う(3)〜CSRF対策〜

PyramidのSessionFactoryを実装するさいにimplementが必要になるISessinインタフェースですが、ここではCSRF対策に関わる機能が規定されています。
CSRF対策に利用するトークンを発行する機能です。
=>トークンをどう使うかは実装者に委ねられています。当然ですが。

CSRFトークンの新規発行は以下のように行います。
token = request.session.new_csrf_token()

new_csrf_tokenメソッドによりトークンを発行します。
このとき、トークンがセッションに自動で格納されます。

発行済みのトークン取得するには以下のように、get_csrf_tokenメソッドを実行します。
token = request.session.get_csrf_token()

セッションに格納されている発行済トークンを取得します。
取得できなかった場合は、新規トークンを発行します。

続きを読む Pyramidのセッション機能を使う(3)〜CSRF対策〜

Pyramidのセッション機能を使う(2)〜Beakerを使う〜

前回はPyramidのUnencryptedCookieSessionFactoryConfigを使ったセッションの利用方法を確認しました。
UnencryptedCookieSessionFactoryConfigでは、容量やセキュリティの面で実際のアプリケーション開発には使いづらいので、今回はBeakerというライブラリを使ったセッション管理を試してみます。
BeakerはPyramidに特化したものではなく、PythonのWebアプリケーションにセッション機能とキャッシュ機能を提供してくれるライブラリです。
これをPyramidで簡単に利用できるようにしてくれるラッパーが、pyramid_beakerです。

それぞれインストールしますが、pyramid_beakerをインストールすればBeakerもインストールされます。
pip install pyramid_beaker

続きを読む Pyramidのセッション機能を使う(2)〜Beakerを使う〜

Pyramidのセッション機能を使う(1)

今回はPyramidでのセッション管理について確認します。
セッション管理については以下に公式ドキュメントがあります。

Pyramidで用意しているセッション管理の方法は、cookieにセッション値を書き込む形式のものです。
UnencryptedCookieSessionFactoryConfigというSessionFactoryを使います。
ドキュメントでも注意されていますが、クラス名の通り、Unencryptedな値をcookieに書き込むのでセキュアである必要が無い場合以外では使うべきではありません。
またcookie値は書き込める容量に限りがあるので、現実的には実際のアプリケーション開発では使えないと思います。
続きを読む Pyramidのセッション機能を使う(1)

PyramidでSQLAlchemyを使う 〜SELECT文でWHERE句を指定する〜

前回は単純なSELECT文の実行方法を確認しました。
今回は、それにWhere句で条件指定した検索の方法を、ORMを使った場合と、SELECT文を直接指定する場合の2通りで確認します。

確認するデータベース環境は前回と同じです。

以下のSQLを実行する事を目指します。

SELECT * FROM models WHERE id = 1;
SELECT * FROM models WHERE name = 'one';

続きを読む PyramidでSQLAlchemyを使う 〜SELECT文でWHERE句を指定する〜

PyramidでSQLAlchemyを使う 〜単純なSELECTをする〜

Pyramidにて、SQLAlchemyを使って単純なSELECT文を実行する方法、ならびに取得した結果の利用方法について確認します。

SELECTするテーブル定義は以下とします。
※Pyramidのプロジェクトを作成したときに、デフォルトで定義されているmodelsを使います。

スクリーンショット 2014-05-17 21.57.22

また、以下のレコードが登録されている、とします。
続きを読む PyramidでSQLAlchemyを使う 〜単純なSELECTをする〜

PyramidでSQLAlchemyでPostgreSQLに接続する

Pyramid のプロジェクト作成時に、ScafoldにSQLAlchemyを指定した場合、データベースはSQLiteがデフォルトとなります。

今回はデータベースをPostgreSQLに変更する手順を確認します。

まずは前準備として、PostgreSQLにデータベースを用意します。
ここでは、localhostに、以下のデータベースとユーザを作って使う事にします。
データベース名:pyramid_db
接続ユーザ名:pyramid_user(パスワード:password)

続きを読む PyramidでSQLAlchemyでPostgreSQLに接続する

PyramidでSQLAlchemyでMySQLに接続する

Pyramid のプロジェクト作成時に、ScafoldにSQLAlchemyを指定した場合、データベースはSQLiteがデフォルトとなります。

今回はデータベースをMySQLに変更する手順を確認します。

まずは前準備として、MySQLにデータベースを用意します。
ここでは、localhostに、以下のデータベースとユーザを作って使う事にします。
データベース名:pyramid_db
接続ユーザ名:pyramid_user(パスワード:password)

create database pyramid_db;
create user pyramid_user@localhost identified by 'password';
grant all on pyramid_db.* to pyramid_user@localhost;

続きを読む PyramidでSQLAlchemyでMySQLに接続する

Pyramidでのログ出力方法(3)

さて前回まで、コンソールやファイルへのログ出力方法を確認しました。コンソールに出力するには、SreamHandlerを使い、ファイルに出力するにはFileHandlerを使いました。
今回はそれら以外のHandlerを利用してみます。
Pyramidのログ出力はPythonの標準のloggerを使いますので、そこに含まれるHandlerは基本的に使えるはずです。
HandlerについてはPyhtonのサイトにて説明がありますが、今回はその中で実際に使う事がありそうな、WatchedFileHandler、RotatingFileHandler、TimedRotatingFileHandlerについて確認します。
続きを読む Pyramidでのログ出力方法(3)

Pyramidでのログ出力方法(2)

前回に引き続きログ出力方法について書きます。前回はdevelopment.iniのログ出力関係の設定について書いたので、今回は実際にログを出力してみます。

  1. 利用するloggerの指定方法とloggerインスタンスの作り方
  2. ログの出力フォーマットのカスタマイズ
  3. ファイルへのログ出力方法

について見ていきます。
続きを読む Pyramidでのログ出力方法(2)

Pyramidでのログ出力方法(1)

今回は、Pyramidでのログ出力の方法について確認します。
公式ドキュメントのLoggingも合わせて確認してください。

さて、公式ドキュメントにある通り、PyramidではPythonのStandard Libraryのlogging moduleを使ってログを出力できます。また、そのための設定をiniファイルにて簡単に行う事ができます。
※ただし、pcreateコマンドで、scaffoldを指定したプロジェクトを構築した場合かも。普通がそうすると思うので特に気にしないで進みましょう。
今回もSQLAlchemyのscaffoldで作ったプロジェクトで説明していきます。
続きを読む Pyramidでのログ出力方法(1)