Метод as_view
Метод as_view применяется к классу
MethodView и создаёт функцию-представление,
которую Flask может использовать в качестве
обработчика маршрута. Первым параметром
передаётся имя представления. Это имя
используется для построения URL через
url_for и должно быть уникальным.
Класс MethodView позволяет описывать
обработчики разных HTTP-методов в виде
отдельных методов класса. Метод as_view
связывает эти методы с соответствующими
HTTP-запросами.
Синтаксис
Class.as_view(name, *class_args, **class_kwargs)
Пример
Давайте создадим класс-представление и
привяжем его к маршруту через as_view:
from flask import Flask
from flask.views import MethodView
app = Flask(__name__)
class UserView(MethodView):
def get(self):
return 'user page'
app.add_url_rule(
'/user',
view_func=UserView.as_view('user_view')
)
Теперь при GET-запросе на адрес /user
сработает метод get класса:
user page
Пример
Давайте добавим обработку POST-запроса в тот же класс:
from flask import Flask, request
from flask.views import MethodView
app = Flask(__name__)
class UserView(MethodView):
def get(self):
return 'get user'
def post(self):
return 'create user'
app.add_url_rule(
'/user',
view_func=UserView.as_view('user_view')
)
Результат выполнения POST-запроса:
create user
Пример
Давайте используем имя представления
для построения URL через url_for:
from flask import Flask, url_for
from flask.views import MethodView
app = Flask(__name__)
class UserView(MethodView):
def get(self):
return 'user page'
app.add_url_rule(
'/user',
view_func=UserView.as_view('user_view')
)
with app.test_request_context():
print(url_for('user_view'))
Результат выполнения кода:
"/user"
Смотрите также
-
класс
MethodView,
который лежит в основе метода -
метод
get,
который обрабатывает GET-запросы в классе -
метод
post,
который обрабатывает POST-запросы в классе -
метод
dispatch_request,
который выбирает метод по HTTP-запросу