Метод copy
Метод copy применяется к объекту запроса
request и возвращает новый объект
Request, который является независимой
копией исходного. Метод не принимает параметров.
Копия содержит те же данные: путь, метод, заголовки,
параметры и тело запроса, что и оригинал.
Метод удобно использовать, когда нужно изменить
состояние запроса, не затрагивая оригинальный
объект. Например, при path_shift или
при подмене значений атрибутов в промежуточных
обработчиках.
Синтаксис
request.copy()
Пример
Давайте получим копию объекта запроса и убедимся, что это разные объекты:
from bottle import Bottle, request
app = Bottle()
@app.route('/')
def index():
req = request.copy()
return str(req is request)
Результат выполнения кода для адреса /:
False
Пример
Давайте скопируем запрос и изменим его путь
через path_shift, не затрагивая оригинал:
from bottle import Bottle, request
app = Bottle()
@app.route('/user/<name>')
def user(name):
req = request.copy()
req.path_shift()
return req.path
Результат выполнения кода для адреса /user/abcde:
/user/abcde
Пример
Давайте проверим, что копия содержит те же параметры запроса, что и оригинал:
from bottle import Bottle, request
app = Bottle()
@app.route('/')
def index():
req = request.copy()
return str(req.query_string == request.query_string)
Результат выполнения кода для адреса /?a=1&b=2:
True
Смотрите также
-
класс
Request,
который представляет объект HTTP-запроса -
метод
path_shift,
который сдвигает путь запроса -
атрибут
query,
который хранит GET-параметры запроса -
атрибут
environ,
который содержит WSGI-окружение запроса