cod*_*321 2 python django django-apps
我已经阅读了一些关于"app"应该在django中意味着什么的问题,但是它们会进入应用程序的通用/使用,这很重要,但不是应用字面上的"是".例如,我今天感受到了好奇心
我删除了一个用django-admin startapp作为应用安装的文件夹,并收到一个错误,stackO告诉我是由于我的INSTALLED_APPS中删除了一个已删除的应用名称.清除名称后,我的应用程序再次运行
在项目的最高级别使文件夹冷(只是mkdir,没有startapp)时,当尝试从真实应用程序导入名称时,我必须将我的项目添加到sys.path列表才能导入.将此文件夹重命名为应用后,导入不再是问题
我已经阅读过有关此主题的问题,其中包含"好的,我有一个models.py文件,因此它是一个应用程序",而且似乎很少有人真正理解应用程序的启动方式.
我的问题是,
我有什么余地修改django制作的应用程序?我可以删除它附带的所有文件(init除外)并使其成为没有视图和模型的冷库吗?除init之外的任何文件是否都需要正常运行?
django在运行startapp时会做什么导致应用程序自动导入,当我在其中创建一个带有init的文件夹时,效果不存在(正如我所说的那样需要将项目路径添加到该文件夹中的sys.path ).换句话说,django命令"startapp"实际上用来注册应用程序是什么?这个动作在django.core.management.templates.py中,我今天读了它,看到了TemplateCommand.handle()中引用应用程序或项目名称的东西,但是看不清楚它是如何注册它们的.它导入sys,但搜索"sys.module"不在文件中
如果我想将一个带有init的空目录转换为一个应用程序,我在shell中做什么来进行此更改而不执行startapp?
谢谢
TLDR:Django应用程序只是项目中的Python包,除了__init__.py导入它之外,您不需要任何文件.
我也经历过Django文档中对"app"的这种模糊解释,并且在我开始时我能够理解Django的概念之前,它让我在一般方案中研究了什么是"web应用程序".
通常定义的Web应用程序是通过浏览器从服务器传输到客户端的任何程序.这可以是整个网站,网站中的某个组件(想想验证码,小部件,OAuth等),也可以是网站的功能(例如与其他技术集成,例如将页面导出为PDF).这些可以是模块化组件,也可以不是,可移植或不可移植,并且在项目的源代码中是不同的或与其他东西混合在一起.
由于一般的"Web应用程序"定义非常模糊,因此可能更容易想象"Django应用程序".您的项目包含一个或多个应用程序,其中一些应用程序可能包含文件.从技术上讲,你的应用程序除了__init__.py仍然可以导入之外什么都没有(它只是一个普通的Python软件包,虽然是无用的).你可以把它变成一个包含其他模块的库,但这似乎是unpythonic,我尽可能地将业务逻辑与我的网站源代码分开.
应用程序只是为您的项目做些事情的东西.许多人,包括我自己,想要定义应用程序的问题,是"它做了什么?" 如果你不能以简洁的方式回答这个问题(不包括"和"),那么你的应用程序可以分成几个不同的部分.建议您这样做,但如果您真的需要,可能会违反此规则.在我的第一个Django项目中,我将整个网站放在一个app文件夹中.这成了管理的噩梦,但我做到了.
视图和模型只是在一个地方存储您需要为该应用程序使用的信息的地方; 如果您的整个网站只有一个大应用程序,那么事情会很快变得混乱和无法管理.那当然是unpythonic,而Django的开发人员非常清楚"正确地"做事.
至于技术细节,Django项目是包.您可以使用manage.py startproject并在之前/之后检查sys.path.应用程序也是包,它(据说)包含允许"app"执行其预期功能的模块.您可以将它们用于任何事物,一切或根本没有,但它们只是一个Python包,其中的模块位于系统的整齐小文件夹中,可以为您的项目执行某些操作.
如果您还没有,可以在这里找到Django文档中应用程序的快速概述.此外,这都是我基本理解的产物,所以如果我的答案的任何部分有任何问题,请告诉我.
| 归档时间: |
|
| 查看次数: |
153 次 |
| 最近记录: |