Класс View
Класс View применяется для создания представлений на основе классов.
Он наследуется от класса View из модуля flask.views.
В классе необходимо определить методы, соответствующие HTTP-методам,
например get, post, put. Первым параметром методы
принимают self, остальные параметры передаются из URL.
Регистрация класса осуществляется через метод add_url_rule
или через метод as_view.
Синтаксис
from flask.views import View
class MyView(View):
def dispatch_request(self):
pass
Пример
Давайте создадим простое представление на основе класса
и зарегистрируем его для адреса '/':
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'))
Результат выполнения кода:
Пример
Давайте определим метод get в классе представления
и примем параметр name из URL:
from flask import Flask
from flask.views import View
app = Flask(__name__)
class UserView(View):
def get(self, name):
return name
app.add_url_rule('/user/<name>', view_func=UserView.as_view('user'))
Результат выполнения кода для адреса /user/abcde:
Пример
Давайте используем метод dispatch_request для обработки
разных HTTP-методов в одном представлении:
from flask import Flask, request
from flask.views import View
app = Flask(__name__)
class ArticleView(View):
def dispatch_request(self):
if request.method == 'GET':
return 'article'
elif request.method == 'POST':
return 'created'
app.add_url_rule('/article', view_func=ArticleView.as_view('article'))
Результат выполнения кода для GET-запроса:
Результат выполнения кода для POST-запроса:
Смотрите также
-
метод
as_view,
который создаёт функцию представления из класса -
метод
dispatch_request,
который обрабатывает запрос в представлении -
метод
get,
который обрабатывает GET-запрос -
метод
post,
который обрабатывает POST-запрос