我正在Django
上创建一个可安装的pypi
应用程序,该应用程序可以添加到INSTALLED_APPS
中。该应用目前可以正常工作。
现在的问题是我希望在我的应用中使用Django Rest Framework
。这是否意味着用户在安装我的应用时必须将我的应用以及Django Rest Framework
添加到他们的INSTALLED_APPS
中?
有没有一种方法可以将我的应用简单地添加到INSTALLED_APPS
中,而用户无需意识到或担心其他任何事情。他们不需要知道我在后台使用Django Rest Framework
?
我已经将djangorestframework
添加到我的setup.py
中,以便当用户pip installs
我的软件包时安装它。因此,问题在于用户是否必须将其明确添加到INSTALLED_APPS
。
答案 0 :(得分:1)
您最好/应该做的是将rest框架添加为应用程序中的依赖项,并指示用户在已安装的应用程序中添加rest框架。因为项目设置不应该被实用地修改,所以应该明确地进行硬编码,并在代码库中保持只读状态。
您应指示用户在已安装的应用(如this package does
中添加其他框架)您可以做的另一件事是像这样检查用户是否在AppConfig类的ready
挂钩中安装了“ rest_framework”
class YourAppConfig(AppConfig):
name = 'yourapp'
def ready(self):
from django.conf import settings
if 'rest_framework' not in settings.INSTALLED_APPS:
raise ImproperlyConfigured('rest_framework must be in installed apps.')
这至少会迫使他们这样做。
答案 1 :(得分:0)
您可以在setup.py中将djangorestframework
添加到install_requires
中。
然后,当您的用户运行pip install yourapp
时,它也会安装rest框架。
我个人希望在设置说明中将'yourapp'
和'rest_framework'
添加到INSTALLED_APPS
中。您也许可以找到一种自动添加它的方法,但是这样做可能不值得。例如,Django Debug Toolbar removed its automatic setup code可以降低复杂性。