Flask 和 Django 的对比

时间:2022-06-26 19:22:16

1 ) Flask

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

( 2 ) Django

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

flask
#!/user/bin/env python
# -_ coding:utf-8 --
# by Havoc
from flask import Flask #初始化引用Flask
from flask import render_template
from flask import redirect #重定向使用

app = Flask(name)

@app.route(‘/student’,methods=[‘GET’]) def home_index():
return ‘Hello World’

@app.route(‘/detail’) def article_detail():
return render_template(‘detail.html’)

@app.route(‘/’) def index():
return rediret(‘/detail/’)

@app.route(‘/login//’) def show_welocme(username):
return ‘Hello,%s’ % username

if name==’main‘:
app.run(host=’127.0.0.1’,port=25532,debug=True)

Flask连接sqlserver

#!/user/bin/env python
# -_ coding:utf-8 --
# by Havoc
# -- coding:utf-8 --

import pymssql

class MSSQL:
def init(self,host,user,pwd,db):
self.host = host
self.user = user
self.pwd = pwd
self.db = db

  def __GetConnect(self):
    if not self.db:
        raise(NameError,"没有设置数据库信息")
    self.conn = pymssql.connect(host=self.host,user=self.user,password=self.pwd,database=self.db,charset="utf8")
    cur = self.conn.cursor()
    if not cur:
        raise(NameError,"连接数据库失败")
    else:
        return cur

def ExecQuery(self,sql):
    cur = self.__GetConnect()
    cur.execute(sql)
    resList = cur.fetchall()

    #查询完毕后必须关闭连接
    self.conn.close()
    return resList

def ExecNonQuery(self,sql):
    cur = self.__GetConnect()
    cur.execute(sql)
    self.conn.commit()
    self.conn.close()

# ms = MSSQL(host=”1***”,user=”“,pwd=”“,db=”**”)
ms = MSSQL(host=”“,user=”“,pwd=”“,db=”“)
reslist = ms.ExecQuery(“select * from System_Users”) for i in reslist:
print (i)

# newsql=”update System_Users set name=’%s’ where id=1”%u’Havoc’
# print (newsql) ms.ExecNonQuery(newsql.encode(‘utf-8’))

Diango
https://www.cnblogs.com/feixuelove1009/p/5823135.html