gpt4 book ai didi

python - 在 Django 中,术语 "app"是如何定义的?

转载 作者:太空宇宙 更新时间:2023-11-03 18:46:14 25 4
gpt4 key购买 nike

在我的 Django 应用程序中,我有很多代码,因此我将源文件分开并将它们放入子文件夹中,如下所示:

myproject/
myapp/
management/
__init__.py
models/
__init__.py
common.py
users.py
matches.py
questionnaires/
demographics/
templates/
__init__.py
models.py
views.py
...
views/
__init__.py
abstract.py
concrete.py

现在我很困惑要在INSTALLED_APPS中放入什么。是所有包含模型的文件夹吗?或者所有包含源代码的文件夹?如果我包含所有子文件夹,是否还需要包含父文件夹?这应该与我的 setup.pypackages 参数中的内容相匹配吗?

注意:我知道我可以将其重构为多个应用程序,但是(1)我希望所有这些功能都有一个公共(public) namespace ,因为它正在重新分发,并且(2)我无论如何都对我的问题的答案感到好奇。

最佳答案

放置包含 models.py 文件的目录,即您的“应用程序”。 Django 使用模型绑定(bind)到数据库,之后的一切都只是填充。

DJango 初创公司本身就是(非常精简)

管理.py

# The important part
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "path.to.your.settings")

这将定义重要的部分,但让我们看看已安装的

设置.py

INSTALLED_APPS=(
'your.app.name'
)

这基本上表明,您会在那里找到我的 models.py 和一些模型定义(它们不必定义,但 models.py 需要存在)

你的/app/name/models.py

class SomeModel(models.Model):
#... model definition ...
pass

现在回到你的settings.py

您的源可以存在于任何地方,因为 DJango 会在一些非常特定的位置查找某些内容,但这主要是在您的 settings.py 中配置的

ROOT_URLCONF = 'path.to.urls' # this is the pythonic module path to your `urls.py` file

在您的 urls.py 文件中,您可以定义一个 url,例如

url(r'^/some/url/def/$', 'some.other.module.handler'),

只要 some.other.module 中的 handler 返回一个有效的 HttpResponse 对象并且位于 PYTHONPATH 上,该类位于何处并不重要。

Django 有一些关于管理命令的细节,它们必须位于您的应用程序目录中(与您的模型目录相同),以便定义它们(如果您的 model.py 文件位于不同的位置)你必须将它们放在你的数据目录中

例如,我有一个具有以下布局的项目

/app  
/data
/commands
some_command.py
models.py
/app
urls.py
settings.py
...other-source-files...

我的settings.py简单地说加载应用程序data并指向app.url进行url配置,从那时起就可以了你的来源在哪里并不重要(在大多数情况下)。

我们这样做是为了让我们的数据库表被命名为data_sometablename vs app_sometablename(我没有参与这个选择,发生在我加入之前很久)

关于python - 在 Django 中,术语 "app"是如何定义的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19457840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com