Django model 更新

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/ailinyingai/article/details/102594007

for attr, value in validated_data.items():
setattr(instance, attr, value)
instance.save()

Book.objects.filter(pk=pk).update(**d)

Book.objects.create(**d)

instance, created = Book.objects.get_or_create(slug=slug, defaults=d)
if not created:
for attr, value in d.iteritems():
setattr(instance, attr, value)
instance.save()

目录结构没什么统一的规范。象 ROR 项目基本目录结构都一致,要找什么文件或看什么文件非常方便(约定大于配置)。 而看看那些 Django 项目,大多数是每个项目目录有自己的目录规范。

Django的缺点大包大揽: 对于一些轻量级应用不需要的功能模块Django也包括了,不如Flask轻便。

过度封装: 很多类和方法都封装了,直接使用比较简单,但改动起来就比较困难。

性能劣势: 与C, C++性能上相比,Django性能偏低,当然这是python的锅,其它python框架在流量上来后会有同样问题。

模板问题: django的模板实现了代码和样式完全分离,不允许模板里出现python代码,灵活度对某些程序员来说可能不够。

ORM 就是通过实例对象的语法,完成关系型数据库的操作的技术,是"对象-关系映射"(Object/Relational Mapping) 的缩写。

ORM 把数据库映射成对象。
• 数据库的表(table) --> 类对象(class)
• 记录(record,行数据)–> 对象(object)
• 字段(field)–> 对象的属性(attribute)

ORM 使用对象,封装了数据库操作,因此可以不碰 SQL 语言。开发者只使用面向对象编程,与数据对象直接交互,不用关心底层数据库。
可以方便实现: 增加(Create)、读取查询(Read)、更新(Update)和删除(Delete)

三:ORM 的优点。
• 数据模型都在一个地方定义,更容易更新和维护,也利于重用代码。
• ORM 有现成的工具,很多功能都可以自动完成,比如数据消毒、预处理、事务等等。
• 它迫使你使用 MVC 架构,ORM 就是天然的 Model,最终使代码更清晰。
• 基于 ORM 的业务代码比较简单,代码量少,语义性好,容易理解。
• 你不必编写性能不佳的 SQL。

四:ORM 的缺点。
• ORM 库不是轻量级工具,需要花很多精力学习和设置。
• 对于复杂的查询,ORM 要么是无法表达,要么是性能不如原生的 SQL。
• ORM 抽象掉了数据库层,开发者无法了解底层的数据库操作,也无法定制一些特殊的 SQL。

Flask 只是一个微框架。要做你自己组装去。表单怎么解决? 从社区找了个 Flask-Form?跨站攻击? 社区 Flask-Form 帮你做了。登陆认证鉴权怎么搞定? 自己写 User 模块。ORM 怎么挑选?flask-sqlalchemy 自己组装一下。等等 SQLAlchemy 是什么玩意? query 语法写起来怎么这么原始…DBMigration 怎么做? Alembic 配合 SQLAlchemy, 等等,SQLAlchemy?? Alembic缓存怎么做? 自己手动封装一下 RedisPy其他…

shamate
core
auth.py
db.py
tasks.py
models.py
company # 通过 django app 切分模块
view.py
urls.py
user
store
init.py
celery.py
logging.py
m.py
settings.py
urls.py
wsgi.py

Django 不容易扩展Django 没那么难扩展。你说,我不想用 template, 我想 直接开接口 Rest 一波流。DjangoRestFramework 满足你的要求。你说,我的用户系统比较复杂,我不想用 Auth 模块,你直接定义User/Company/AdminStaff 即可。你说,admin 模块很难用,但讲真的,admin 模块适合人手不足的情况下快速怼界面,快速验证自己的设计思路。国人出的 xadmin 也是不错的。Django 不 Scale, 缓存做好了么?查询优化了么?分库分表了么?MQ 做了么?如果这还不够的话,确实应该开开心心的招人换语言和框架了。Django 很重… 然而,你学完一套 Flask 的整个体系之后,发现一点都没比 Django 少学什么。但一定会发现你在找文档上面确实花费了不少的时间。

Flask确实很“轻”,不愧是Micro Framework,从Django转向Flask的开发者一定会如此感慨,除非二者均为深入使用过Flask自由、灵活,可扩展性强,第三方库的选择面广,开发时可以结合自己最喜欢用的轮子,也能结合最流行最强大的Python库入门简单,即便没有多少web开发经验,也能很快做出网站非常适用于小型网站非常适用于开发web服务的API开发大型网站无压力,但代码架构需要自己设计,开发成本取决于开发者的能力和经验各方面性能均等于或优于DjangoDjango自带的或第三方的好评如潮的功能,Flask上总会找到与之类似第三方库Flask灵活开发,Python高手基本都会喜欢Flask,但对Django却可能褒贬不一Flask与关系型数据库的配合使用不弱于Django,而其与NoSQL数据库的配合远远优于Django

Django太重了,除了web框架,自带ORM和模板引擎,灵活和自由度不够高Django能开发小应用,但总会有“杀鸡焉用牛刀”的感觉Django的自带ORM非常优秀,综合评价略高于SQLAlchemyDjango自带的模板引擎简单好用,但其强大程度和综合评价略低于JinjaDjango自带ORM也使Django与关系型数据库耦合度过高,如果想使用MongoDB等NoSQL数据,需要选取合适的第三方库,且总感觉Django+SQL才是天生一对的搭配,Django+NoSQL砍掉了Django的半壁江山Django目前支持Jinja等非官方模板引擎Django自带的数据库管理app好评如潮Django非常适合企业级网站的开发:快速、靠谱、稳定Django成熟、稳定、完善,但相比于Flask,Django的整体生态相对封闭Django是Python web框架的先驱,用户多,第三方库最丰富,最好的Python库,如果不能直接用到Django中,也一定能找到与之对应的移植Django上手也比较容易,开发文档详细、完善,相关资料丰富

django认为他的开发者是 企业数据库应用开发者,核心痛点在于:用户需求复杂多变,但是数据库crud类型应用居多,代码大量简单重复,而企业拥有的开发者能力平平。需要一个平台框架,规范开发,简化开发,提高效率,屏蔽更多技术细节。django是企业老板喜欢的,靠他快速做项目赚钱的工具。django封装屏蔽了技术细节,开发者掌握最少知识就可以开发,技术的事情留给django或者插件来做。django很企业级很重,做到平台化,希望做到傻瓜化开发。如果django自身如果有问题,开发者会很无力无法掌控。还好django可以满足大多数应用的需求,开发者不需要折腾。flask没有限定开发者的使用模式,只做了一个核心,提供良好的扩展机制。因此flask也非常强调对开发者的体验,做到了pythonic的漂亮。开发者很爽也可以完全控制到底层。如果说django是一个黑盒子平台,那flask就是一个可以看到底的小工具。django希望自己是傻瓜化的开发者,跟我走就行;那flask会让开发者觉得自己聪明可控。再就是flask的文档比django也要好。程序员喜欢flask,老板喜欢django。是这么回事其实任何一个项目做大发了,就会逐渐积累一个自己的开发平台。然后企业会独立一帮人专门做平台,另外一帮人专门做应用。那django说,平台的事,让我来好了,你们都安心做应用去!特别是数据库应用

2016年

用过flask,碰到各种坑,这种小众开源项目,碰到bug,实在是受不了,作者也没有精力解决,比如, python socket 10054错误。原因是当页面请求比较大的数据 or 需要一定量计算时间的数据, 这个时候, 未等到服务端返回数据, 用户关闭页面(close socket client),会导致10054异常,这个异常会直接导致python进程异常退出。这个issue一直开着,还没有close。flask宣称简单。确实,但是,当你需要orm的时候,还得学习sqlachemy。以前都说Django的orm难用,我撸了一个项目,觉得用起来很简单,和java的hibernate差不多,如果说有什么不中意的,就是没有二级缓存。还有,flask你遇到bug,想定位的话,不得不定位到它的依赖库——Werkzeug 。你就慢慢看吧。还有之前抱怨Django的模版难用。现在也支持了jinja2。Django1.9+,都挺好的。自从我用过flask之后,我终于明白了为什么大公司喜欢花几十万买redhat的维保。为什么有得公司不差钱,喜欢用商业产品。产品好不好另说,小众的开源软件,绝对不能商用,大坑。这就是为什么open source erp 无人问津。除了穷B再用。问题是,穷B公司觉得自己用了erp高大上了,岂不知,这种穷B公司,用excel就可以满足管理要求了。

https://gitee.com/enjoy_bin/ShopApi

猜你喜欢

转载自blog.csdn.net/ailinyingai/article/details/102594007