在Django中,“app”一词是如何定义的?

2024-03-28 20:52:57 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的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)我希望所有这些功能都有一个通用的命名空间,因为它正在被重新分发,(2)我对我的问题的答案很好奇。在


Tags: django代码py文件夹应用程序initmodelsmyproject
1条回答
网友
1楼 · 发布于 2024-03-28 20:52:57

将包含模型.py文件,那是你的“应用程序”。只需将Django所使用的填充程序绑定到数据库之后。在

DJango初创公司(非常精简)就是这样

在管理.py

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

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

在设置.py

^{pr2}$

基本上说,你会发现我的models.py和一些模型定义(它们不需要定义,但是models.py需要存在)

您的/应用程序/名称/模型.py

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

现在回到你的设置.py在

您的源代码可以在任何地方生存,因为DJango在一些非常特定的位置查找某些特定的东西,但这主要是在设置.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'),

只要handler中的handler返回一个有效的HttpResponse对象并且位于PYTHONPATH上,那么这个类就不重要了。在

Django有一些关于管理命令的细节,它们必须位于你的应用程序目录中(与你的model dir相同),所以要定义这些命令(如果你的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\u sometablenamevsapp\u sometablename(我不是这个选择的一部分,发生在我加入之前很久)

相关问题 更多 >