Метод as_view
Метод as_view применяется к классу-представлению,
унаследованному от View. Он возвращает
функцию-обработчик, которую Flask может привязать
к маршруту. Первым параметром передаётся имя
представления, которое используется для построения
URL через url_for.
Синтаксис
MyView.as_view(name, *class_args, **class_kwargs)
Пример
Давайте создадим класс-представление и привяжем его
к адресу '/':
from flask import Flask
from flask.views import View
app = Flask(__name__)
class IndexView(View):
def dispatch_request(self):
return 'hello'
app.add_url_rule('/', view_func=IndexView.as_view('index'))
Результат выполнения кода:
hello
Пример
Давайте передадим параметр в конструктор класса
через as_view:
from flask import Flask
from flask.views import View
app = Flask(__name__)
class UserView(View):
def __init__(self, greeting):
self.greeting = greeting
def dispatch_request(self, name):
return self.greeting + ', ' + name
app.add_url_rule('/user/<name>',
view_func=UserView.as_view('user', greeting='hello'))
Результат выполнения кода для адреса /user/abcde:
<+html+>
hello, abcde
<-html+>
Пример
Давайте используем имя представления для построения
URL через url_for:
from flask import Flask, url_for
from flask.views import View
app = Flask(__name__)
class IndexView(View):
def dispatch_request(self):
return 'hello'
app.add_url_rule('/', view_func=IndexView.as_view('index'))
with app.test_request_context():
res = url_for('index')
print(res)
Результат выполнения кода:
'/'
Смотрите также
-
класс
View,
от которого наследуются классы-представления -
метод
dispatch_request,
который обрабатывает запрос внутри класса -
метод
init_every_request,
который управляет созданием экземпляра на каждый запрос -
метод
as_view,
который преобразует класс в функцию-обработчик