私は別の質問をしますpython flask how to pass a dynamic parameter to a decorator、私は答えを得ました。python flask APIモジュール動的パラメータをデコレータに渡す方法
私はフラスコを使用しています。flask-restful apiを使用しています。これは安らかなapi とこのコードを作成するのが非常に簡単です。
class ShopCategoryListAPI(Resource):
#@redis_hash_shop(shop_id=LocalProxy(lambda: shop_id))
@redis_hash_shop(shop_id)
def get_shop(self, shop_id):
return Shop.query.get(shop_id)
def get(self, shop_id):
shop = self.get_shop(shop_id)
pass
私はMySQLからのお店を照会する前にデコレータにshop_id
を渡したい、とここに私のデコレータのデモがあります。
def redis_hash_shop(shop_id):
def fn_wrapper(fn):
def decorated_function(*args, **kwargs):
key = 'shop:{}'.format(shop_id)
if redis_store.exists(key):
return redis_store.hgetall(key)
else:
shop = fn(*args, **kwargs)
pass
return decorated_function
return fn_wrapper
これは単なるデモで、mysqlからのクエリの前にredisでショップ情報を取得します。
そして私はエラーになります。それは私たちに教えてくれるUnresolved reference error
問題を解決する方法を知っている人は誰ですか?前もって感謝します。
'shop_id'を関数/デコレータの外で定義する必要があります。 – wmorrell
@wmorrell私はフラスコを使用しています。安静で、関数の外でshop_idを定義することはできません。ここにデモがあります。http://flask-restful.readthedocs.io/en/0.3.5/quickstart.html#resourceful-routing – diligent
あなたはPyCharmを使いますか? – lapinkoira