Django 可重用应用程序配置
Django Reusable Application Configuration
我有一些连接到数据库的 Django 中间件代码。我想将中间件变成一个可重用的应用程序 ("app"),这样我就可以将它打包分发到许多其他项目中,而无需复制和粘贴。
我不明白可重用应用程序应该在哪里进行自我配置。因为它是为了重新分发而设计的,所以我没有能力自己编写中央 settings.py。查看 Django 文档,我看到有 settings.configure 但它似乎替换了整个配置,而不是让我 "splice" 将新数据库放入 DATABASES。
让我的可重用中间件应用程序能够配置自己的数据库连接的正确方法是什么?我不希望它干扰我将要安装它的应用程序的数据库。谢谢。
数据库连接。
首先,我不太确定让中间件连接到项目默认数据库以外的任何东西是个好主意。如果您真的想要该功能,最好让用户直接将其添加到设置文件中,因为数据库连接设置会因安装而异。
如果您的应用想要进行原始查询,就这样做
from django.db import connection
cursor = connection.cursor()
如果可以的话还是用ORM更好
应用特定设置
一种方法是在您的可重用应用程序中创建一个名为 app_settings.py 的文件。然后你可以在其中添加如下代码。
from django.conf import settings
SOME_APP_SETTING = getattr(settings, 'SOME_APP_SETTING', SOME_DEFAULT)
这允许任何安装您的应用程序的人更改主 settings.py 文件中的一些设置。
如果您真的想要花哨的东西,可以在此处创建一个自定义数据库设置部分,并允许用户在 settings.py 文件中覆盖它。
您可以按照 Django 调试工具栏的方法进行操作。它包含一个应用程序配置 class,并覆盖 ready
方法中的设置。
可以看到代码here.
我有一些连接到数据库的 Django 中间件代码。我想将中间件变成一个可重用的应用程序 ("app"),这样我就可以将它打包分发到许多其他项目中,而无需复制和粘贴。
我不明白可重用应用程序应该在哪里进行自我配置。因为它是为了重新分发而设计的,所以我没有能力自己编写中央 settings.py。查看 Django 文档,我看到有 settings.configure 但它似乎替换了整个配置,而不是让我 "splice" 将新数据库放入 DATABASES。
让我的可重用中间件应用程序能够配置自己的数据库连接的正确方法是什么?我不希望它干扰我将要安装它的应用程序的数据库。谢谢。
数据库连接。
首先,我不太确定让中间件连接到项目默认数据库以外的任何东西是个好主意。如果您真的想要该功能,最好让用户直接将其添加到设置文件中,因为数据库连接设置会因安装而异。
如果您的应用想要进行原始查询,就这样做
from django.db import connection
cursor = connection.cursor()
如果可以的话还是用ORM更好
应用特定设置
一种方法是在您的可重用应用程序中创建一个名为 app_settings.py 的文件。然后你可以在其中添加如下代码。
from django.conf import settings
SOME_APP_SETTING = getattr(settings, 'SOME_APP_SETTING', SOME_DEFAULT)
这允许任何安装您的应用程序的人更改主 settings.py 文件中的一些设置。
如果您真的想要花哨的东西,可以在此处创建一个自定义数据库设置部分,并允许用户在 settings.py 文件中覆盖它。
您可以按照 Django 调试工具栏的方法进行操作。它包含一个应用程序配置 class,并覆盖 ready
方法中的设置。
可以看到代码here.