问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

一个django项目可以有多少个app(2023年最新整理)

发布网友 发布时间:2024-09-06 18:23

我来回答

1个回答

热心网友 时间:2024-10-13 19:32

导读:很多朋友问到关于一个django项目可以有多少个app的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!

Django中使用model怎么查询不等于某个值的情况

Model是django项目的基础,如果一开始没有好好设计好,那么在接下来的开发过程中就会遇到更多的问题.然而,大多数的开发人员都容易在缺少思考的情况下随意的增加或修改model.这样做的后果就是,在接下来的开发过程中,我们不得不做出更多努力来修正这些错误.

因此,在修改model时,一定尽可能的经过充分的考虑再行动!以下列出的是我们经常用到的一些工具和技巧:

South,用于数据迁移,我们会在每个django项目中都用到.但到django1.7时,将会有django.db.migrations代替.

django-model-utils,用于处理常见的模式,例如TimeStampedModel.

django-extensions,主要用到shell_plus命令,该命令会在shell中自动载入所有的app的model

1.基本原则

第一,将model分布于不同的app中.如果你的django项目中,有一个app拥有超过20个model,那么,你就应当考虑分拆该app了.我们推荐每个app拥有不超过5个model.

第二,尽量使用ORM.我们需要的大多数数据库索引都能通过Object-Relational-Model实现,且ORM带给我们许多快捷方式,例如生成SQL语句,读取/更新数据库时的安全验证.因此,如果能使用简单的ORM语句完成的,应当尽量使用ORM.只有当纯SQL语句极大地简化了ORM语句时,才使用纯SQL语句.并且,在写纯SQL语句是,应当优先考虑使用raw(),再是extra().

第三,必要时添加index.添加db_index=True到model中非常简单,但难的是理解何时应该添加.在建立model时,我们事先不会添加index,只有当以下情况时,才会考虑添加index:

在所有的数据库查询中使用率在10%-25%时

或当有真实的数据,或能正确估计出使用index后的效果确实满意时

第四,注意model的继承.model的继承在django中需要十分小心,django提供了三种继承方式,1.abstractbaseclass继承(不要和Pyhton标准库的abc模块搞混),2.多表(multi-table)继承,3.proxymodel继承.下表罗列了这三种继承的优劣:

django的创造者和其他许多开发人员都认为,多表继承的方法不是一个良好的方法.因此我们强烈建议大家不要使用该方法.下面列举了一些常见的如何选择model继承的情形:

如果只有少数model拥有重复的field时,大可不必使用model继承,只需要在每个model中添加这些相同的field即可.

如果有足够的model拥有重复的field时,大多是情况下,可以使用abstractbaseclass继承,将相同的field提取到abstractbaseclass中.

Proxymodel继承很少被用到,和其他两种继承也有着许多不一样之处.

请不要使用多表(multi-table)继承,因为它既消耗资源又复杂,如果可以,尽量使用OneToOneFields和ForeignKeys代替.

django项目中,创建时间和修改时间这两个field是最用到的,下面给出一个abstractbaseclass继承的例子:

2.DjangoModel的设计

如何设计出好的djangomodel可能是最难也是最复杂的一个话题了,在此,我们看看一些基本的技巧吧:

a.规范化

我们首先建议了解数据库规范化(databasenormalization).如果你还不清楚这是什么,那么,我们强烈建议你先阅读一下相关的书籍,或搜索"关系型数据库设计"或"数据库规范化".在创建djangomodel之前,应当首先保证设计的数据库是规范化的.

b.cache

正确的使用cache能帮助我们提高数据库的性能.详细的信息,我们会在今后的文章中作进一步介绍.

c.何时使用null和blank

当定义modelfield时,我们可以设置null=True和blank=True(默认都是False),知道何时设置null和blank对于开发人员也是十分重要的,在下面的表格中,我们一一列举了如何使用这两个选项:

d.什么时候使用BinaryField

在django1.6中,新增了BinaryField,用于储存二进制数据(binarydata或bytes).对于BinaryField,我们无法使用ORM的filters,excludes或其他SQL操作.但在少数情况下,我们会用到BinaryField,例如MessagePack格式的内容,传感器接受的原始数据和压缩数据等.但需要注意的是,BinaryData一般都十分庞大,因此可能会拖慢数据库的速度.如果发生这一现象,我们可以将binarydata储存在文件中,然后使用FileField储存该文件的路径信息.

还有,不要从BinaryField中直接读取文件并呈献给用户.因为,1.从数据库读写总是比从文件系统读写慢;2.数据库备份会变得十分庞大,花费更多的时间;3.获得文件的过程,增加了从django到数据库的这一环节.

3.不要替换默认的ModelManager

从ORM获取model,实际上是通过django中的Modelmanager完成的,django为每一个model提供了默认的modelmanager,我们不建议将其替换掉,因为:

当使用model继承时,model会继承abstractbaseclassmodel的modelmanager,而不会继承非abstractbaseclass的manager.

model的第一个modelmanager通常作为默认的manager,当被替换时,可能会发生不可预测的问题.

4.数据库事务(Transaction)

在django1.6中,ORM默认会autocommit每一个数据库查询,也就是说,每次使用m.create()或m.update()时,在数据库中马上就会做出相应的修改.这样做的好处就是简化了初学者对ORM的理解.但坏处就是,当一个view中包含两个数据库修改,可能一个成功,但另一个失败,这就可能导致数据库不完整,给我们带来很大的危险.

解决这一问题的方法就是使用数据库transaction,即将一系列数据库操作包含在一个transaction中,当其中有一个失败时,其他操作也会自动回退.Django1.6为我们带来了一套崭新的既简单又强大的transaction机制,使我们方便的使用数据库transaction.

a.将整个httprequest包裹在transaction中

django给我们提供了一个简单地方法,将一个httprequest中的所有数据库操作包裹在transaction中:

只需要在数据库设置中加入'ATOMIC_REQUESTS':True选项,就能将整个httprequest包裹在transaction中.这样做的好处显而易见是是安全,但坏处则是性能可能会下降,因此随着流量的增大,我们必须采取更针对性的transaction.其次,需要注意的是,回退的只是数据库的状态,而不包括其他费数据库项,例如发送email等.所以当涉及这些非数据库项时,我们应当使用transaction.con_atomic_request()修饰(decorate)这些view:

b.更明确地transaction控制

更明确地transaction控制意味着提高真题webapp的性能,但也意味着更多的开发时间.大多数网站下,由于有限的流量,使用ATOMIC_REQUESTS已经足够.在使用手动transaction控制时,应当注意:

不做数据修改的操作,应当排除在transaction之外

做数据修改的操作,则应在transaction内

特殊情况下,可以违反以上两条

需要注意的是,当view返回的是django.http.StreamingHttpResponse时,应当设置ATOMIC_REQUESTS为false,或使用transaction.non_atomic_requests将该view修饰.因为对于view本身,是可以使用transaction的,但对于之后生成的responsestream触发的额外SQL查询,会自动变为django默认的autocommit模式.

django一个项目多个App项目搭建

django可以在一个项目中存在多个app,如一个大门户网站中可以包含论坛,新闻等内容,其中每一个模块称之为一个App,也可以理解为一个个独立的小型项目最终集成在一个门户网站中最终呈现给用户

本次测试以python2.7

其次分别建立相应的App模块:todo,oa,web

如图所示:

在以上的配置中导入了include对配置进行包装

同时导入了index函数,index在todo,oa,web中的views文件分别建立

同时指定了一个打开的默认首页,即webapp下的index/pre

此时运行程序,页面如图所示

如果此时输入的路径为localhost:8000/web/inex,

localhost:8000/oa/inex,

localhost:8000/toto/index将得到不同app的展现,

求助大神啊!我们五个人想做一个django的网站,就肯定要每个人写自己的app。

做之前你们需要一个好一点的设计框架,如果要做自己的app,理论上是app中分别建表。最好是保证每个app可以单独使用,不依赖其他的app,既然又有两表联系,那么设计里面应该需要的一个叫做common的模块,将需要共享的数据独立出来供大家调用。

为什么django这样设置就能实现把所有app放到同一个目录?

我也是新手,才学习?我的理解是因为BASE_DIR是获取项目的配置根目录文件夹,Django不会寻找项目配置目录文件夹以外的文件夹,那么如果是多个APP共存一个文件下,就必须把这个文件夹路径加入到环境变量中,即把‘apps’这个文件夹加入进去?,sys.path.insert(0,os.path.join(BASE_DIR,‘apps’))即插入到当前环境变量中,而os.path.join()是添加路径可在Python命令行下使用help(os.path.join)进行查看,需要导入os这个包才可以。如果能够帮助到你,请采纳

django同一个project下的不同APP的model之间,可以建立一对多,一对一,或者多对一的关系吗?

class?order_list_model(models.Model):

????user?=?models.ForeignKey("user_app.user_model")??#?该订单的用户

#?查询一个用户的所有订单

order_list_model.objects.filter(user=query_user)

请教一个关于Django多个App多个独立域名的问题

不可以的,你要把你另外三个域名提交给你的虚拟主机供应商,添加你这三个域名,然后你的备案信息又变成审核中...没问题的话,过几天就好了。这样你4个域名就都使用一个备案号。

结语:以上就是首席CTO笔记为大家整理的关于一个django项目可以有多少个app的相关内容解答汇总了,希望对您有所帮助!如果解决了您的问题欢迎分享给更多关注此问题的朋友喔~

django为什么要多个app(2023年最新解答)

django一个项目多个App项目搭建django可以在一个项目中存在多个app,如一个大门户网站中可以包含论坛,新闻等内容,其中每一个模块称之为一个App,也可以理解为一个个独立的小型项目最终集成在一个门户网站中最终呈现给用户 本次测试以python2.7 其次分别建立相应的App模块:todo,oa,web 如图所示:在以上...

django并发量是多少(2023年最新分享)

???而nginx可以支持高并发连接,官方给出最大连接数在50000个左右,实际生产中,大约也在20000~40000个左右,内存消耗少,稳定性高,支持热部署(可以在不间断服务的情况下,进行版本升级)。???相对比较而言,Django自带的runserver,只适合我们在测试的时候使用。结语:以上就是首席CTO笔记为大家整理的关...

如何在django下建立多个app(2023年最新分享)

django-adminstartprojectHelloDjango创建HelloDjango项目 然后进入到HelloDjango项目根目录下,运行命令创建hello模块 pythonmanage.pystartapphello 此时PyCharm中就有一个HelloDjango项目了。现在我们来搭建一个简单的web服务。修改views.py文件 修改urls.py文件 两个文件修改完后,就可以启动项目了,执行命令 p...

django是如何运行多个项目的(如何运行一个django项目)

django可以在一个项目中存在多个app,如一个大门户网站中可以包含论坛,新闻等内容,其中每一个模块称之为一个App,也可以理解为一个个独立的小型项目最终集成在一个门户网站中最终呈现给用户 本次测试以python2.7 其次分别建立相应的App模块:todo,oa,web 如图所示: 在以上的配置中导入了include对配置进行包装 同时导入...

django支持哪些数据库(2023年最新分享)

Django已发展十余年,具有广泛的实践案例,同时Django提供完善的在线文档,Django用户能够更容易地找到问题的解决方案。 ③强大的数据库访问组件。Django自带一个面向对象的、反映数据模型与关系型数据库间的映射关系的映射器,开发者无须学习SQL语言即可操作数据库。 ④灵活的URL映射。Django提供一个基于正则表达式的URL分发...

Django中一个项目里怎么使用两个数据库

在django项目中, 一个工程中存在多个APP应用很常见. 有时候希望不同的APP连接不同的数据库,这个时候需要建立多个数据库连接。1. 修改项目的 settings 配置在settings.py中配置需要连接的多个数据库连接串2. 设置数据库的路由规则方法在settings.py中配置DATABASE_ROUTERS1DATABASE_ROUTERS=[‘Prject.data...

django能做什么(2023年最新整理)

剩下的曾经有个创业项目做了三个月差不多前后台也就是三万多行。最后说结论吧,项目小,周期短,投入少,还是就django吧。django框架介绍 Django是高水准的Python编程语言驱动的一个开源模型.视图,控制器风格的Web应用程序框架,它起源于开源社区。使用这种架构,程序员可以方便、快捷地创建高品质、易...

django中如何写脚本(2023年最新解答)

一个app是一套Django功能的集合,通常包括模型和视图,按Python的包结构的方式存在。例如,Django本身内建有一些app,例如注释系统和自动管理界面。app的一个关键点是它们是很容易移植到其他project和被多个project复用。创建一个APP 在“PythonProject”项目文件下输入下面的命令来创建“nowamagic”app:1...

django适合什么网站(2023年最新整理)

Django+Python:Disqus,Pinterest,Instagram,WashingtonPost。 国内用Python开发的知名网站有豆瓣和知乎等等。不可否认,国内用Django开发的大型网站还不多,但随着Python越来越热及Django越来越成熟,相信会有更多人选择Django来提高PythonWeb开发效率。 Python的Django框架是Pythonweb框架中最重量级的一个了,使用它几乎能完成各种...

Django管理系统都有哪些(2023年最新解答)

Django项目是一个Python定制框架,它源自一个在线新闻Web站点,于2005年以开源的形式被释放出来。Django框架的核心组件有:用于创建模型的对象关系映射 为最终用户设计的完美管理界面 一流的URL设计 设计者友好的模板语言 缓存系统。Django(发音:[`d???ɡ??])是用python语言写的开源web开发框架(opensource...

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
染色翡翠如何测 染色翡翠怎么测 中国平安保险保单号码 平安人寿团体保险,工人出险意外,医院病例写的是从两米高处落下脚摔伤... 小老鼠咬的牙印是连在一起的吗 ...总觉得生活的孤独, 我想学点乐器,培养性格,那么请问我适合学什么乐... 我是一个高二的女生、最近对吉他和架子鼓很有兴趣 ...DLINK-624+A 也恢复默认过。账号密码不管怎么输入都不对admin_百度... D-Link DI-624+A无线路由器的使用说明书丢了,不知道用户密码怎么办 我的D-link DI-624+A 无线路由器忘记密码,怎么办? 避孕的方法有哪些 哪种最靠谱 特斯拉订单编号是什么意思? ...性质的公司行为,并存在竞争关系。此行为是否违法? 员工注册公司违法吗? 小米手机怎么获取权限呢 小米手机权限设置在哪里设置 华为手机怎么设置耳机自动接听电话? 苹果手机怎么设置蓝牙耳机来电接听 苹果手机怎么用蓝牙耳机接电话 大学生应怎样看待学习大神们帮帮忙 梦见有三人送我好厚本书的预兆 晚上睡觉把开机的手机放在身边对身体有害吗?? 给男宝宝起名字怎么起好 睡觉时 , 手机方身旁 , 对身体有害吗? 财务战略管理(财务管理专业系列教材)内容简介 营口仙人岛赶海攻略_沈阳自驾海边游路线推荐 大连周边海岛游哪个好 旅游攻略 基于产品周期理论企业财务战略如何选择注会公司战略知识点产品生命周期... 写出音节是什么意思? 小学作业上面的音序和音节指什么? 艾拉光动力治疗仪艾拉光动力(ALA-PDT)的治疗原理 什么是组合底 洛南老君山景区特色 用了栓剂,没排出体外的是不是就全部吸收了 第一次用带棉线的栓剂,没注意,把棉线也放进去了,取了半天也没有取出来... 当事人在羁押如何送达 民事诉讼中被告一方为羁押的人应该怎么处理 华为gt2参数配置 已知ad=bc,求证:ad+cd是b²+d²与a²+c²的比例中项 已知a=3 b=12,若x是a b的比例中项,求x 如果3是x和9的比例中项,那么x=__ 若x比z=5:比3,x是y与z的比例中项,那么x比y等于几? 华为手机扬声器声音突然变小 信丰是哪个省哪个市 常常扁桃体发炎怎么办 成年人扁桃腺炎经常发炎,怎么办 老是扁桃体发炎一个月几次怎么回事 邯郸学步如何解释?邯郸学步的读音是什么 山地是不是就是山脉急~~~ 生铁和钢铁的区别 生铁和钢的性能不同是因为( )A.铁元素存在状态不同B.主要成分不同C.含...