0

次のように、settings.py で特定の設定を指定して、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'

また、呼び出し可能オブジェクトへのパスを渡そうとしました:

ENDLESS_PAGINATION_PAGE_LIST_CALLABLE = 'myapp.views.get_pagination_pages'

しかし、サードパーティのアプリは気に入らないようです。私は得たCaught TypeError while rendering: 'str' object is not callable

ここで使用されているサードパーティ アプリはdjango エンドレス ページネーションです。INSTALLED_APPS に含まれています。

アプリで定義された呼び出し可能オブジェクトを settings.py 経由でサードパーティ アプリに渡すにはどうすればよいですか?

4

1 に答える 1

2

明らかに、アプリの期待は呼び出し可能であり、文字列ではありません。したがって、それが機能する場合、これは機能するはずです:

from myapp.views import get_pagination_pages
ENDLESS_PAGINATION_PAGE_LIST_CALLABLE = get_pagination_pages

settingsただし、他のファイルよりも先にロードされることを知っておく必要があります。また、モデルからインポートするビュー ファイルをロードしようとすると、設定をロードする必要がある場合、循環インポートが発生する可能性があり、おそらく最善の方法です。それを避けるにはimport models、そうでないファイルに関数を配置することutils.pyです。

関数が十分に単純であれば、settingsそれ自体、またはそれに対応するファイルを配置します。

于 2012-01-24T03:06:43.370 に答える