Вы должны заметить, что 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
не для этой работы, хотя похоже, что это так. Это действительно запутанно.
Вы можете просто использовать цикл for
и оператор модуля %
, чтобы убедиться, что ваш индекс не превышает диапазон массива:
$days = 9;
$arr = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'];
for ($i = 0; $i < $days; $i++) {
echo $arr[$i % 5] . ',';
}
Вывод:
Monday,Tuesday,Wednesday,Thursday,Friday,Monday,Tuesday,Wednesday,Thursday,
Если вы не хотите использовать запятую, просто добавьте тест для конца цикла перед его выводом:
for ($i = 0; $i < $days; $i++) {
echo $arr[$i % 5] . ($i == $days - 1 ? '' : ',');
}
Вывод:
Monday,Tuesday,Wednesday,Thursday,Friday,Monday,Tuesday,Wednesday,Thursday
Вы перебирали массив $days
раз. Вам следует перебирать массивы $days
indexes.
$days = 13;
$arr = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'];
foreach (range(0, $days - 1) as $i) {
echo $arr[$i % 5] . ',';
};