指南:许多朋友询问有多少个应用程序可以进行Django项目。本文的首席CTO笔记将为您提供详细的答案,以供所有人参考。我希望这对每个人都会有所帮助!让我们一起看看!
模型是Django项目的基础。如果起初设计不当,那么在下一个开发过程中将遇到更多问题。或修改模型。这样做的后果是,在下一个开发过程中,我们必须做更多的努力来纠正这些错误。
因此,在修改模型时,我们必须尽可能多地考虑!以下是我们经常使用的一些工具和技术:
南方,对于数据迁移,我们将在每个Django项目中使用它。但是,当Django 1.7时,将会有Django.db。移民。
Django-Model-Utils,用于处理常见模式,例如TimessTampedModel。
django-extensions主要使用shell_plus命令,该命令将自动加载所有应用程序中的所有应用程序
1.基本原则
首先,在不同的应用程序中分发模型。如果您的Django项目中有20多个型号,则应考虑旋转该应用程序。我们建议每个应用程序的模型不超过5码。
其次,尝试使用ORM。我们需要的大多数数据库索引都可以通过对象相关模型来实现,ORM为我们带来了许多快捷方式,例如生成SQL语句,读取/更新数据库时的安全验证。因此,如果您可以使用简单的ORM语句,则应尝试尽可能多地使用ORM。只有当纯SQL语句大大简化ORM语句时,才使用纯SQL语句。并且,在编写纯SQL语句时,应优先使用RAW()然后使用frain()。
第三,如有必要,添加索引。添加db_index = tum tum to to Model非常简单,但是很难理解何时应该添加它。建立模型后,我们不会提前添加索引。索引:
当所有数据库查询中的使用率为10%-25%时
或当有真实数据时,或者可以正确估计使用索引后的效果确实令人满意
第四,请注意模型的继承。该模型的继承需要在Django中非常谨慎。Django提供了三种继承方法,1。Abstract Base类继承(请勿与Pyhton Standard库的ABC模块混合),2。Multi -Table(Multi -Table(Multi -Table(Multi -Table)模型继承。下表列出了这三个继承的优点和缺点:
Django的创建者和许多其他开发人员认为,多观看继承方法不是一个好方法。因此,我们强烈建议您不要使用此方法。以下是选择模型继承的一些常见方法:
如果只有少数模型重复了字段,则无需使用模型继承。您只需要将这些相同的字段添加到每个模型中。
如果您有足够的模型具有重复的字段,则大多数字段是由抽象基类继承的,并且将同一字段提取为抽象基类。
代理模型很少使用,与其他两个继承存在许多差异。
请不要使用多桌继承,因为它既消耗资源又消耗复杂。如果可以,请尝试使用OneTooneFields和Forefore。
在Django项目中,创建时间和修改时间的两个字段最有用。抽象基类继承的示例如下:
2. Django模型设计
如何设计良好的Django模型可能是最难,最复杂的话题。在这里,让我们看一些基本技能:
A。标准化
我们首先建议了解数据库归一化。如果您不知道这是什么,那么我们强烈建议您先阅读相关书籍,或搜索“关系数据库设计”或“数据库标准化”。在模型之前,应首先确保设计数据库。
b。缓存
正确使用缓存来帮助我们提高数据库的性能。详细信息,我们将在未来的文章中进一步介绍。
C.何时使用空和空白
在定义模型字段时,我们可以设置null = true和blank = true(默认值为false),知道何时设置null和空白对开发人员也非常重要。在以下表格中,我们如何列出一个,我们如何一个一个列出,我们如何一个一个列出。使用这两个选项:
D.何时使用binaryfield
在Django 1.6中,添加了二进制文件中的二进制数据(二进制数据或字节)。对于BinaryField,我们不能使用ORM的过滤器,不包括其他SQL操作。但是在少数情况下,我们将使用BinaryField,例如,MessagePack格式的内容,传感器接受的原始数据和压缩数据。但是应该注意的是,二进制数据通常非常大,因此可能会慢慢降低数据库。如果发生这种现象,我们可以存储文件中的二进制数据存储,然后使用文件字段存储文件的路径信息。
另外,请勿直接从BinaryField读取文件,并将其呈现给用户。因为,1。从数据库中读取和写作总是比文件系统慢;2.数据库备份将变得巨大,花更多的时间;它需要更多的时间; 3。获取文件的过程增加了此链接,从Django到数据库。
3.不要替换默认模型管理器
实际上,从ORM获得模型是通过Django的模型管理器完成的。Django为每个模型提供默认模型管理器。我们不建议替换它,因为::::
当使用模型继承时,模型将继承抽象基类模型的模型管理器,而无需继承非提交基类的经理。
Model的第一个模型管理器通常用作默认管理器。替换后,可能会出现不可预测的问题。
4.数据库事务(事务)
在Django 1.6中,每个数据库查询的ORM默认值是使用M.Create()或M.Update()时,每次timeIT都会简化对第一学者对ORM的理解的理解。但是缺点是,当一种视图包含两个数据库修改时,它可能会成功,但另一个视图可能会导致数据库不完整并带来很多危险。
解决此问题的方法是使用数据库事务。在即将到来的一系列数据库操作中,它包含在事务中。当其中一个失败时,其他操作将自动返回。Django 1.6为我们带来了一套新的简单简单简单的简单性。强大的交易机制使我们能够轻松地使用数据库事务。
A。将整个HTTP请求包装在交易中
Django为我们提供了一种简单的方法,可以将所有数据库操作包裹在交易中的HTTP请求中:
您只需要在数据库设置中添加'atomic_requests':TRUE选项,并且可以将整个HTTP请求包装在交易中。这样做的好处显然是安全的,但是劣势可能会下降。因此,我们必须采用更有针对性的交易。其次,应该注意的是,数据库的状态仅是数据库的状态,而不是其他数据库项目,例如发送电子邮件。因此,当涉及这些非数据库项目时,我们应该使用ittransaction.con_atomic_request()docoration()装饰(十年):
b。更清楚的交易控制
更清楚的是,交易控制意味着改善真实问题Web应用程序的性能,但这也意味着更多的开发时间。在大多数网站下,由于流量有限,Atomic_requests的使用就足够了。使用手动交易控制时,请注意:
不要进行数据修改的操作,应将其排除在交易之外
数据修改的操作应在交易中
在特殊情况下,您可以违反上述两个
应当指出的是,当视图返回django.http.streaminghttpresponse时,您应该将atomic_requests设置为false,或使用trassaction.non_atomic_requests修改视图。流由流触发的额外SQL查询将自动成为Django的Django Defaut Autocommit模式。
Django可以在一个项目中拥有多个应用程序。例如,大型门户可以包括论坛,新闻和其他内容。每个模块称为一个应用程序,也可以理解为一个独立的小型项目。该网站最终呈现给用户
该测试是Python 2.7
其次,相应的应用模块分别建立:todo,oa,web
如图所示:
在上面的配置中,引入Inclubly以包装配置
同时,介绍了索引函数,并建立了TODO,OA和Web中索引中的视图文件
同时,指定了一个打开的默认主页,即
此时,运行程序,该页面显示在图中
如果此时输入的路径是Localhost:8000/web/inex,
Localhost:8000/OA/INEX,
Localhost:8000/TOTO/索引将由不同的应用显示,
在这样做之前,您需要一个更好的设计框架。如果您想执行自己的应用程序,理论上可以在应用程序中构建表格。最好确保每个应用程序都可以单独使用并且不依赖其他应用程序。由于有两个联系表,因此应使用一个称为“常见”的模块来独立使用来呼叫每个人打电话。
我也是一个新手,我学会了自己的理解,因为base_dir是获得该项目的配置根目录文件夹。django不会使用一个文件夹查找项目配置目录文件夹。添加到“环境变量”的此文件夹路径,也就是说,添加sys.path.insrt in sys.path.insrt(0,os.path.join(base_dir,,base_dir,,,'apps')插入当前环境变量,OS.Path.join()是使用帮助(OS.Path.join)在Python命令行下查看添加路径。您需要导入OS软件包。如果您可以帮助您,请采用它
class order_list_model(models.model):
user = models.foreignkey(“ user_app.user_model”)#
#的用户的所有订单
order_list_model.objects.filter(user = query_user)
不,您必须向虚拟主机供应商提交其他三个域名,添加您的三个域名,然后您的归档信息将成为审查...如果没有问题,几天就可以了几天之内就可以了。这是正确的。这样,您的四个域名使用备案号码。
结论:以上是CTO注释可以为所有人编制多少个应用程序的相关内容答案。希望它对您有所帮助!如果您解决了问题,请与更多关心此问题的朋友分享?