Как передать вызываемый файл, определенный в моем приложении django, стороннему приложению django через мой проект settings.py? - PullRequest
0 голосов
/ 24 января 2012

Я пытаюсь передать функцию, определенную в моем views.py, указав конкретный параметр в settings.py, стороннему приложению django, используемому в моем проекте, как показано ниже:

ENDLESS_PAGINATION_PAGE_LIST_CALLABLE = myapp.views.get_pagination_pages

и я получил ошибку NameError: name 'lend_borrow' is not defined

Тогда я попробовал

import myapp
ENDLESS_PAGINATION_PAGE_LIST_CALLABLE = myapp.views.get_pagination_pages

и еще одна ошибка AttributeError: 'module' object has no attribute 'views'

Я также пытался передать путь к вызываемому:

ENDLESS_PAGINATION_PAGE_LIST_CALLABLE = 'myapp.views.get_pagination_pages'

Но стороннему приложению это не нравится. Я получил Caught TypeError while rendering: 'str' object is not callable

Здесь используется стороннее приложение Django Endless Pagination . Он включен в INSTALLED_APPS.

Как передать вызываемый вызов, определенный в моем приложении, стороннему приложению через settings.py?

1 Ответ

2 голосов
/ 24 января 2012

Очевидно, что ожидание приложения - это вызываемое, а не строка. Итак, если это работает, это должно работать:

from myapp.views import get_pagination_pages
ENDLESS_PAGINATION_PAGE_LIST_CALLABLE = get_pagination_pages

Однако вы должны знать, что settings загружается раньше, чем любой другой файл, и если вы попытаетесь загрузить файл представлений, который импортируется из моделей и который, в свою очередь, требует загрузки настроек, может быть циклический импортировать и, вероятно, лучший способ избежать этого - поместить функцию в файл, который не import models, скажем utils.py или что-то в этом роде.

Если функция достаточно проста, я бы поместил ее в settings или в файл, параллельный этому.

...