Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

pyramidでビューへのアクセスの前後でフックする。tween

More than 1 year has passed since last update.

ビューの前でフックしてしたい

たとえば、毎回ビューが呼ばれる前に何かをしたいときなど
今回、自分の場合だとDBの操作を毎回ビューの処理の前に行うことがやりたかったです。

実装

pyramidのサンプル用のプロジェクトを作成する
こちらを参考にしてください
https://qiita.com/noracorn92/items/07f5f7dbad8f551c3c45

tween.pyを作成

# -*- coding:utf-8 -*-
import logging

logger = logging.getLogger(__name__)


class sample_tween_factory(object):

    def __init__(self, handler, registry):
        self.handler = handler
        self.registry = registry

    def __call__(self, request):
        print("start")
        response = self.handler(request)
        print("end")
        return response

init.pyにtweenを登録する

下から2行目で登録しています

from pyramid.config import Configurator


def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application.
    """
    config = Configurator(settings=settings)
    config.include('pyramid_jinja2')
    config.add_static_view('static', 'static', cache_max_age=3600)
    config.add_route('home', '/')
    config.scan()

    config.add_tween('.tween.sample_tween_factory')
    return config.make_wsgi_app()

実行確認

スクリーンショット 2019-06-07 11.26.33.png

スクリーンショット 2019-06-07 11.27.14.png

実行するとフックできているのが確認できます

noracorn92
ひとりで合同会社arecoreをやっています。 システムエンジニアと、輸入物販をしています。 株式会社Ticketstarと契約していて、チケットのシステムを作成しています twitterもnoracornでやっております。 気軽に絡んでくださいw
http://arecore.net
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away