Вы должны заметить, что APPLICATION_ROOT
для этой цели НЕ.
Все, что вам нужно сделать, это написать промежуточное программное обеспечение для внесения следующих изменений:
PATH_INFO
, чтобы обработать префикс url. SCRIPT_NAME
, чтобы сгенерировать префиксный URL. Как это:
class PrefixMiddleware(object):
def __init__(self, app, prefix=''):
self.app = app
self.prefix = prefix
def __call__(self, environ, start_response):
if environ['PATH_INFO'].startswith(self.prefix):
environ['PATH_INFO'] = environ['PATH_INFO'][len(self.prefix):]
environ['SCRIPT_NAME'] = self.prefix
return self.app(environ, start_response)
else:
start_response('404', [('Content-Type', 'text/plain')])
return ["This url does not belong to the app.".encode()]
Оберните свое приложение с помощью промежуточного программного обеспечения, например:
from flask import Flask, url_for
app = Flask(__name__)
app.debug = True
app.wsgi_app = PrefixMiddleware(app.wsgi_app, prefix='/foo')
@app.route('/bar')
def bar():
return "The URL for this page is {}".format(url_for('bar'))
if __name__ == '__main__':
app.run('0.0.0.0', 9010)
Посетите http://localhost:9010/foo/bar
,
Вы получите правильный результат: The URL for this page is /foo/bar
И не забудьте установить домен cookie, если вам нужно.
Это решение задано gist Larivact. APPLICATION_ROOT
не для этой работы, хотя похоже, что это так. Это действительно запутанно.
Я действительно сталкивался с этим набором сравнительных тестов производительности.
Выглядит, как будто Jaxer работает лучше, чем направляющие, но не, а также php...
Я не использовал Jaxer очень долго, но здесь являюсь некоторыми вещами, которые я нашел:
Профессионалы
Недостатки
В целом, я думаю, что Jaxer имеет большую часть обещания как постпроцессор перед другой сетью framewok. Было бы замечательно использовать Jaxer для разделения на уровни всего элегантного материала Ajax сверху существующего сайта. Это сделало бы намного легче сделать динамический сайт с проверкой / логика управления страницей совместно использованный сервером и клиентом. Я не думаю, что хотел бы записать приложение с помощью только Jaxer. Кроме того, это молодо (и незрело) - мне будет интересно видеть, где это заканчивается.
@BRH: Большое понимание. Я повторил бы всех "Профессионалов" и "Недостатки" 2, 4, и 5 и Ваш заключительный обзор. Я отчасти получаю смысл, что они не намеревались переместить любой рынок для восходящих платформ..., но если они могли бы сделать так и сохранить его столь же трудным и понятным, как это, я надеюсь, что они делают! Мне нравится способ, которым они думают!
P.S. Я не знаю, является ли это новым, но существует a <jaxer:include
тег, который вводит фрагменты в страницу до выполнения сценария серверной стороны, которое могло бы быть справкой в некоторых сценариях повторного использования кода. Может быть больше, чтобы я обнаружил вдоль тех строк.