Я создаю приложение с помощью платформы Web2py... Я не хочу должным быть использовать объект запроса получить все querystring параметры, вместо этого я хотел бы создать свой контроллер с именованными параметрами и иметь маршрутизатор, распаковывают querystring (или данные формы) словарь в именованные параметры и называют мой контроллер.
таким образом вместо метода контроллера
create_user():
где я использовал бы глобальный запрос (), возражают и просматривают список Вара... Я предпочел бы вместо этого иметь
create_user(first_name, last_name, email):
как я вижу в других платформах MVC.
действительно ли это уже возможно в Web2py? или есть ли плагин для него? или я должен добавить что сам?
Нет. Как указано в книге , URL-адрес формы
http://127.0.0.1:8000/a/c/f.html/x/y/z?p=1&q=2
соответствует приложению (папке) a
, контроллеру (файлу) c.py
, функции f
, а дополнительные аргументы должны быть распакованы из объекта запроса как
x, y, z = tuple(request.args)
p = request.vars['p'] # p=1
q = request.vars['q'] # q=2
Более того, web2py определенно определяет допустимые функции контроллера как те функции, которые не имеют аргументов. AFAICR, это противоположно Django, который определяет допустимые функции контроллера как те, у которых есть хотя бы один аргумент.
Я делаю
def create_user():
try:
first_name, last_name, email = request.args[:3]
except:
redirect('some_error_page')
но учтите, что имя_фамилия, фамилия_фамилия и email могут содержать символы, которые не разрешены в path_info (web2py придирчиво проверяет, что разрешены только [\w\-\...]).