我正在尝试将我在views.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'
我还尝试将路径传递给callable:
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?
将我的应用中定义的可调用内容传递给第三方应用答案 0 :(得分:2)
显然,应用程序的期望是可调用的而不是字符串。所以,如果它有效,这应该有效:
from myapp.views import get_pagination_pages
ENDLESS_PAGINATION_PAGE_LIST_CALLABLE = get_pagination_pages
但是,您应该知道在任何其他文件之前加载了settings
,并且如果您尝试加载从模型导入的视图文件并且反过来需要加载设置,则可以循环导入,可能是避免它的最佳方法是将函数放在一个不import models
的文件中,比如utils.py
或类似的东西。
如果函数足够简单,我会把它放在settings
本身,或者与它平行的文件中。