Контроллеры Web2py с параметрами?

Я создаю приложение с помощью платформы Web2py... Я не хочу должным быть использовать объект запроса получить все querystring параметры, вместо этого я хотел бы создать свой контроллер с именованными параметрами и иметь маршрутизатор, распаковывают querystring (или данные формы) словарь в именованные параметры и называют мой контроллер.

таким образом вместо метода контроллера

create_user():

где я использовал бы глобальный запрос (), возражают и просматривают список Вара... Я предпочел бы вместо этого иметь

create_user(first_name, last_name, email):

как я вижу в других платформах MVC.

действительно ли это уже возможно в Web2py? или есть ли плагин для него? или я должен добавить что сам?

10
задан Nick Franceschina 9 June 2010 в 06:12
поделиться

2 ответа

Нет. Как указано в книге , 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, который определяет допустимые функции контроллера как те, у которых есть хотя бы один аргумент.

11
ответ дан 3 December 2019 в 23:11
поделиться

Я делаю

def create_user():
    try:
        first_name, last_name, email = request.args[:3]
    except:
        redirect('some_error_page')

но учтите, что имя_фамилия, фамилия_фамилия и email могут содержать символы, которые не разрешены в path_info (web2py придирчиво проверяет, что разрешены только [\w\-\...]).

2
ответ дан 3 December 2019 в 23:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: