Перенаправление через HTTPFound параметры не передаются

У меня есть приложение Pyramid, использующее рассылку URL. У меня есть маршрут «/delete», который удаляет запись из базы данных и перенаправляет в представление. Когда происходит перенаправление, я хочу, чтобы представление перезагружалось на той же странице. Я использую webhelpers.paginate для разбиения на страницы. Проблема в том, что при перенаправлении параметры не передаются.

Маршрут удаления:

@view_config(route_name='delete')
def delete(request):
    # Get the current page, the page title, and the id of the record to delete
    current_page = int(request.params.get('page', 1))

    # Database transactions
    ...
    # Reload the view
    url = request.route_url(route_name='records', app_name='BLAH', userid='BLAH', page=current_page)
    return HTTPFound(location=url)

Просмотр записей:

@view_config(route_name='records', renderer='records.jinja2')
def records(request):
    # Get the current page
    current_page = int(request.params.get('page', 1))

Когда загружается представление записей, параметры не передаются, и для текущей_страницы устанавливается значение по умолчанию «1». Значения «BLAH» для app_name и user_id также не передаются.

Одна вещь, которую я заметил, это то, что кажется, что представление загружается дважды, но я не знаю, как это подтвердить. Я думаю, что страница загружается дважды, потому что я вижу два обращения к базе данных после перенаправления.

Что мне не хватает? Спасибо.


person ericso    schedule 27.11.2013    source источник
comment
Посмотрите в инструменты разработчика вашего браузера, чтобы увидеть, какие запросы выполняются. В Chrome вы можете сохранить журнал при навигации, если это поможет. Кроме того, вы можете добавить print('stuff') в обе функции просмотра.   -  person Antoine Leclair    schedule 28.11.2013


Ответы (1)


Что такое URL, когда ваш print url в маршруте удаления и что это за определение маршрута records?
Если вам нужен GET Запрос, попробуйте аргумент ключевого слова _query

url = request.route_url(name='records', _query=(('page', current_page),))
person Paul Yin    schedule 28.11.2013
comment
Также см. этот ответ: stackoverflow .com/questions/11989317/ - person ericso; 03.12.2013