Некоторые сомнения на реализации пользовательских страниц ошибок в Web2Py

StackOverflow https://stackoverflow.com/questions/2391297

  •  25-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь реализовать декоратор для пользовательских страниц ошибок в Web2PY согласно одному из Todos Haeti. Ref -http://web2py.com/alterego/default/show/75.

Я пытаюсь сохранить его в качестве каталога в качестве модуля в / модулях, чтобы я мог импортировать его в контроллеры и поместить декоратор соответствующим образом.

Я продолжал обрабатывать ошибку декоратора как /modules/onerror.py

и им импортирую это, как это от контроллера говорят (or.py) -

exec('from applications.%s.modules.onerror import onerror as onerror'
                                                       % request.application)

HTTP Object не был доступен в OneRror.py, чтобы я сделал -

from gluon.http import *

Но тогда я прочитал, что объект запроса также недоступен для декоратора, как в строке -

filename=os.path.join(request.folder,'views/errors/error%i.html'%status)

У меня есть сомнения -

  1. Есть / модули каталог хорошее место для сохранения такого многоразового компонента?

  2. Модули в каталоге / модулях автоматически загружаются в виде нового экземпляра Web2PY? Если так, как я могу получить доступ к ним в контроллере?

  3. Есть ли способ пройти объект запроса к этому декорату от моего контроллера? Подсказки приветствуются.

Мой нынешний oneRror.py - http://paste.pocoo.org/show/186165/То, как я пытаюсь использовать в контроллере - http://paste.pocoo.org/show/186167/

Дайте мне знать, если я делаю это неочищенным способом.

Это было полезно?

Решение

Решается через список рассылки пользователей Web2PY.

Вы также можете использовать: OneRror = Load_import ('OneRror'). OneRror

HTTP Object не был доступен в OneRROR.PY, чтобы я сделал - от Import Hluon.http *

Модули Python являются нормальными модулями Python в Web2PY. Они видят только ключевые слова Python, если вы их импортируете. Web2PY имеет 5 специальных объектов (запрос, ответ, сеанс, кеш, т) и ваше приложение имеет другие (БД, аутент, CRUD). Поскольку они создаются при каждом запросе, они не могут импортировать модулем, они должны быть явно переданы функциям в модуле. Ум, что, хотя это неудобно, это то, что другие рамки просят сделать все время для всех функций. Web2PY сохраняет вам это для моделей и контроллеров.

Но тогда я понял, что объект запроса также недоступен для декоратора, как в строке - filename = os.path.join (request.folder, "Просмотры / ошибки / Ошибка% i.html '% Status) У меня есть некоторые сомнения - 1. Являются ли модули в каталоге / модулях, автоматически загруженных в виде нового экземпляра Web2PY? Если так, как я могу получить доступ к ним?

Нет, они являются нормальными модулями Python. Вы должны импортировать их для их использования.

  1. Есть ли способ пройти объект запроса к этому декорату от моего контроллера? Подсказки приветствуются.

Вам нужен мета-декоратор def meta_decoration (что-то): deft actiment_decorator (f, что-то = что-то): do_whatever_you_want () return f () return decorator @meta_decorator (запрос) def function_to_be_decorated (): вернуть Dict () В любом случае вам не нужен декоратор. Посмотрите на маршруты. Examples.py для маршрутов_onError. Есть простой способ сделать то, что вы хотите.

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