Найти - Пользователи
Полная версия: mod_wsgi + bottle: единая точка входа
Начало » Web » mod_wsgi + bottle: единая точка входа
1
axe
Если я пишу в wsgi-скрипт:
def application(environ, start_response):
start_response('200 OK', [('Content-type', 'text/html')])
return str(environ)
то любой url адрес http://localhost/wsgi/ или http://localhost/wsgi/other/folder или http://localhost/wsgi/other/folder/?with=param
обрабатывается внутри функции application

Когда я использую bottle, то перед функцией-обработчиком я должен писать что-то типа
@route( '/', method='POST' )
Если я пишу method='POST', то GET-переменными я уже ни имею право пользоваться?
Причём, если я обращаюсь к http://localhost/wsgi/other/folder, то получаю ошибку 404.
Можно ли сделать, чтобы точка входа для всех адресов осталась одна, и все переменные post и get были бы доступны?
o7412369815963
> GET-переменными я уже ни имею право пользоваться?
способ 1) через реквест к любым параметрам
    request.POST
request.GET
request.COOKIE
2) в роуте:
@route( '/:name', method='POST' )
def main(name):
...
а ещё роуты можно складывать:
@route( '/')
@route( '/', method='POST' )
@route( '/main/')
def main():
axe
делаю:
@route( '/' )
@route( '/:name', method='POST' )
def main():
а затем обращаюсь по адресу http://localhost/wsgi/?session=null → то получаю нормальный ответ.
если я обращаюсь по адресу http://localhost/wsgi/dd?session=null то пишет, что страница не найдена.
axe
И, насколько я понял, @route( ‘/:name’) не будет переадресовывать всё на корневую директорию.
При таком описании она только http://localhost/wsgi/dd может обработать, а http://localhost/wsgi/dd/ee уже не обработает.
Там парсинг происходит по “/”.
o7412369815963
axe
делаю:
@route( '/' )
@route( '/:name', method='POST' )
def main():
а затем обращаюсь по адресу http://localhost/wsgi/?session=null → то получаю нормальный ответ.
если я обращаюсь по адресу http://localhost/wsgi/dd?session=null то пишет, что страница не найдена.
все правильно, т.к. ‘/:name’ только для post в коде указан.
o7412369815963
axe
И, насколько я понял, @route( ‘/:name’) не будет переадресовывать всё на корневую директорию.
При таком описании она только http://localhost/wsgi/dd может обработать, а http://localhost/wsgi/dd/ee уже не обработает.
Там парсинг происходит по “/”.
для /dd/ee, можно сделать так: @route( ‘/:parent/:name’), а вообще для специфических урлов можно использовать regex выражение
axe
o7412369815963
все правильно, т.к. ‘/:name’ только для post в коде указан.
и все возможные варианты нужно перечилять?
@route( '/' )
@route( '/', method='POST' )
и т.д.
o7412369815963
надо сначала определиться что хош сделать.

я использую 1 роут на 1 ф-ию в 95% случаях, и это удобно.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB