Вопрос

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

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

create_user():

Где я бы использовал объект глобального запроса () и просматривать список vars ... я бы предпочел вместо того, чтобы иметь

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')

Но помните, что first_name, last_name и e-mail могут содержать символы, которые не допускаются в Path_info (Web2Py в Chicky при подтверждении того, что только [ W - .].

Существует обстоятельство, в котором контроллеры Web2PY могут использовать параметры. Когда функция контроллера имеет декоратор @Service, можно использовать параметры, в зависимости от типа обслуживания, например:

@service.jsonrpc
def somefunction(a=None, b='default'):
    ## whatever

Этот подход предназначен для того, когда функция контроллера действительно API, а не способ генерировать вид веб-представления. Есть хорошие вещи, которые вы можете сделать с точки зрения определения функций в стиле веб-просмотра и API параллельно, и имея веб-представления о функциях API, чтобы убедиться, что у вас есть хорошее разделение просмотров и контроллеров.

В зависимости от того, как вы решите разделите ответственность между веб-клиентом / JavaScript, View Web2PY и контроллером Web2PY, он может иметь смысл иметь функции контроллера, которые являются действительно API-адресами (с дополнительными параметрами), а не на создание логики распаковки параметров в Контроллер стиля веб-просмотра.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top