Классы представления¶
lookup_names¶
Если в классе представления определен атрибут lookup_names,
то включается механизм сопоставления имен URL-параметров с именами атрибутов первичных ключей модели.
Он необходим, когда заранее не известны имена URL-параметров, либо имена атрибутов модели, используемые для уникальной идентификации ресурса.
Если первичный ключ не составной, то в lookup_names требуется указать только одно имя,
которое не обязательно должно совпадать с именем атрибута первичного ключа модели.
Значение URL-параметра с указанным именем,
будет передано в именованный аргумент id методу представления.
Если первичный ключ составной,
то в lookup_names требуется перечислить имена атрибутов первичного ключа модели.
Важно, чтобы порядок перечисления совпадал с порядком, используемым при выборке в вашем ORM.
В метод представления будет передан именованный аргумент id, имеющий тип словарь,
где ключ словаря это имя атрибута модели, а значение - значение из URL-параметра.
from flask_restlib.views import ApiView
class UserView(ApiView):
"""
Route: /users/<int:user_id>
URL: /users/1
"""
lookup_names = ('user_id',)
def get(id):
# id == 1
class GroupView(ApiView):
"""
Route: /groups/<int:group_id>/members/<int:student_id>
URL: /groups/1/members/3
"""
lookup_names = ('group_id', 'student_id')
def put(id):
# id == {group_id: 1, student_id: 3}
Не используйте lookup_names, если имена URL-параметров, либо атрибутов модели известны заранее.
В этом случае вам подойдет стандартный механизм Flask:
from flask_restlib.views import ApiView
class GroupView(ApiView):
"""
Route: /groups/<int:group_id>/members/<int:student_id>
URL: /groups/1/members/3
"""
def put(group_id, student_id):
# group_id == 1, student_id == 3
Если lookup_names - пустой кортеж, то механизм сопоставления имен отключен.