1

如果你要为一个网站编写一个应用程序,但想让应用程序即插即用,这样你就可以将它放到任何 Django 项目中,设置主 URL 就可以了,如果你想保留所有便携式应用程序中包含的其他必需实用程序应用程序。

例子:

site/
site/site-app1
site/templates/site-app1
site/util-app1
site/util-app2
site/util-app3

注意:site-app1 使用了所有三个 util-apps。它以这种方式工作得很好。但是现在,您决定将应用程序发送给某人,但只是发送给该应用程序及其所有依赖项。

如果我们可以像这样打包和发送应用程序?:

site/site-app1
site/site-app1/template
site/site-app1/util-app1
site/site-app1/util-app2
site/site-app1/util-app3

然后你只需发送 site-app1 ,一切都会随之而来。

有没有办法将实用程序应用程序作为子目录进行便携?

注意:我们的想法是我们不想发送整个项目,而是只发送项目中的一个站点应用程序。

4

3 回答 3

2

有一些关于可重用 django 应用程序的演示,所以到处搜索。这些应该可以帮助您:

于 2009-05-29T18:42:18.337 回答
1

@Gerry 链接到的演示文稿是一般信息的良好来源。为了更直接地回答您的问题,没有办法将一个应用程序打包到另一个应用程序中编辑抱歉,这完全是错误的。您可以将一个应用程序放在另一个应用程序的命名空间中,它工作得很好。这是一个奇怪的事情是:你暗示一个应用程序是另一个应用程序的一部分;如果这是真的,它们会更容易作为一个应用程序使用。所以我仍然推荐以下选项之一)。AFAICT 您的选择是:

  1. 如果可能,将这些外部依赖项设为可选(即,如果 util_app1 可用,则增强功能,如果不可用,则回退行为)。这是有多少应用程序相对于 django-tagging 或 django-mailer 的行为。

  2. 将所有功能整合到一个应用程序中。根据您实际依赖实用程序应用程序的代码量,如果依赖项对于您的应用程序运行是绝对必要的,那么这可能是让您的用户轻松使用的最佳选择。

  3. 分别打包和分发所有应用程序,并注意文档和 setup.py install_requires 中的依赖关系。如果所有应用程序都是独立有用的,那么这种方法可能是最好的。如果它们都不是独立有用的,为什么它们都是独立的应用程序?

于 2009-05-30T02:17:31.803 回答
1

遵循某些惯例,可以使 Django 应用程序具有可移植性。当然,这些不是强制性的

申请地点

约定是在 apps/ 目录中添加应用程序,并修改 manage.py(最终是 apache 配置)以包含

import sys
from os.path import abspath, dirname, join
PROJECT_ROOT = abspath(dirname(__file__))
sys.path.insert(0, join(PROJECT_ROOT, "apps"))

您的目录结构将类似于

site
site/apps/
site/apps/app1/
site/apps/app2/

模板

模板位于应用程序的模板目录中。惯例是不强制用户将它们复制到任何其他位置。最终,用户可以拥有全局模板来覆盖应用程序中的模板。

设置

将所有默认设置保存在 app 目录中的本地文件中。这些设置将被全局设置覆盖。本地设置文件将具有以下结构..

from django.conf import settings

def get(key, default):
    return getattr(settings, key, default)

SETTING_1 = get('SETTTING_1', 10)

这些约定应涵盖大多数主要问题。

于 2009-05-30T05:02:43.143 回答