社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  问与答

话说Django的自由度

cdxfish • 9 年前 • 3247 次点击  

不常来,今天心血来潮,和大家分享下最近的心得。

常听人说 Django 的自由度很低。 那么就这个topic和大家分享下自己的想法。

笔者也尝试用过flask,原因只有一个,想使用 sqlalchemy。 结果..... 看了一下flask的设计,自己写了个skeleton 就把它放弃了。 设计上,flask做的很轻巧。但是说白了就是Werkzeug 的包装。 其实对Werkzeug的依赖大家是有目共睹的,一旦有flask不支持的功能,我们可能还需要在底层上调用Werkzeug的函数来实现。

ok,回到自由度这个话题。

以两个比较热门的python 包为例子:jinja2 和 sqlalchemy。其实在Django 里面使用jinja2 和 sqlalchemy 很简单。 如果是要使用第三方模板, 直接用就是了,没有啥额外的配置。 只是在我们的view 里面写的时候,要手动调用模板系统来直接渲染。

其实这和大多数比较简陋的框架是一样的。 如果你想实现复用,那么就自己写个backend。 DJ1.8 里面已经提供了Jinja2的backend。 自己测试了下,还不错。但是实在没有任何理由让我用jinja2 的模板来替换django的模板。 当你能够熟练写自定义标签的时候,你会真心喜欢上templatetags 这个东东。 至于性能,我还是想说,用缓存吧。

再说sqlalchemy, 其实也不需要做额外的配置。 只要你了解了django的结构。知道django的哪些特性,依赖了哪些配置,基本上,你就可以有选择的舍弃一些特性,从而迁移到你自己的配置上来。 比如我们如果想我们的application 全盘使用sqlalchemy,那意味着你要放弃django的 admin,django的timezone, modelform。 model等工具,第三方的app 也需要做相关的修改。 可能有些同学要问,要是放弃了这些我还不如使用flask。 当然,你可以选择flask,但是flask究竟又提供了哪些功能呢。 但是我想说的是,其实django 提供的工具还远不止于上面提到的几个。 只要django还有路由系统以及app的组织形式, 他就值得我们用。

Django对小app的组织形式非常清晰,每个app 一个单独目录,使得我们的维护和开发都异常的调理清晰,尤其配合pycharm,简直是居家旅游,杀人灭口的最佳利器。 flask 里面的bluesprint 正是要做和django同样的事情。但是,并没有发现他哪里做的比django好。

笔者,也曾经一度陷入各种python web框架中不能自拔,总想找到一个自由度高,自己看着顺眼的框架。 但是找来找去,突然发现只剩下路由和 app 组织形式的django 正是我一直在找的。而且django 代码质量还是不错的,同时兼容py2和py3. 真的想不出有什么理由迁移到其他的web framework。

其实,python里面web开发方向的常用组件很多都在模仿django。 比如WTForm, 结构和设计理念上和django的form是很类似的。 只是某些方面上,确实比django的form 更好用些。 如果大家感兴趣完全可以使用wtform 来替换django本身的form。

Django 提供了很多常用的组件。 各个组件为了协同工作,某些时候,可能就不得不牺牲一些所谓的灵活。 但是我想说的是django也同样适合订制。在大家抱怨django不够灵活的时候,实际上都是正在贪恋着django自带组件给你带来的一些方便。正是因为方便,才不愿舍弃,不愿舍弃又怎能灵活?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/1232
 
3247 次点击  
文章 [ 1 ]  |  最新文章 9 年前