Вершина массива Python в url_for
Я не могу найти какую-либо информацию о генерации URL-адреса, используя такие запросы:
Я попробовал это:
url_for(endpoint, page={'limit': 0, 'offset': 0}, _external=True)
Но он создал следующий URL:
http://www.domain.com?page= {'limit': 0, 'offset': 0}
Мое текущее решение выглядит следующим образом:
querystrings = [] querystrings.append('page[limit]=%d' % (limit)) querystrings.append('page[offset]=%d' % (offset)) url = '%s?%s' % (root_url, '&'.join(querystrings))
Я действительно надеюсь, что есть лучший способ!
Любая помощь будет оценена!
редактировать
Я закончил создание обертки, которая обрабатывает dicts отдельно, основываясь на моем предыдущем решении:
from flask import g, url_for as _url_for def url_for(endpoint, **values): # fix querystring dicts querystring_dicts = [] for key, value in list(values.items()): if isinstance(value, dict): for _key, _value in list(value.items()): querystring_dicts.append('%s[%s]=%s' % (key, _key, _value)) values.pop(key) # create url url = _url_for(endpoint, **values) # append querystring dicts if querystring_dicts: seperator = '?' if '?' in url: seperator = '&' url = '%s%s%s' % (url, seperator, '&'.join(querystring_dicts)) return url
Затем я вызываю обертку следующим образом:
url_for(endpoint, page={'limit': 20, 'offset': 0}, _external=True)
И он вернет следующий URL:
http://www.domain.com?page[limit]=20&page[offset]=0
- Как использовать приложение Flask в Webfaction?
- Обновить текст кнопки отправки в wtforms
- Как я могу тестировать это приложение Flask?
- Flask: IOError при сохранении загруженных файлов
- Как получить данные, полученные в запросе Flask
Я не считаю, что то, что вы пытаетесь, поддерживается из коробки. Под капотом url_for
полагается на конвертеры URL-адреса Werkzeug, чтобы генерировать и кодировать эти значения, и, похоже, не существует кодировщика для словарей (незначительное в сторону, это то, что обозначает синтаксис {key: value}
, это не массив) ,
Я нашел этот рекламный блок, который описывает реализацию пользовательских конвертеров, если вы хотите добавить поддержку самостоятельно. Проект Flask может быть даже рад получить PR, если вы идете по этому маршруту, однако, если вам не нужно использовать page[limit]
а не page_limit
я бы просто изменил их.
url_for(endpoint, page_offset = 0, page_limit=0, _external=True)
- Может ли пользовательский валидатор настраивать поле необязательно?
- Перезагружается ли uWSGI на один рабочий / процесс?
- Импорт из основного приложения в планктон
- Параметры отладки w / Python, Flask и Sublime Text 2
- Переменная в маршрутизации статических файлов Flask
- Что представляет собой объект g в этом флаге?
- Как добавить stdout и stderr в файл регистратора в колбе
- Контекст тестовой фляги render_template ()
- Ограничение NOT NULL Ошибка в Flask + SQLite3