首页 > 代码库 > Python3 之Web 框架:Django 基础

Python3 之Web 框架:Django 基础

ango 优缺点

Django为人所称道的地方主要有:

  • 完美的文档,Django的成功,我觉得很大一部分原因要归功于Django近乎完美的官方文档(包括Django book)。
  • 全套的解决方案,Django象Rails一样,提供全套的解决方案(full-stack framework + batteries included),基本要什么有什么(比如:cache、session、feed、orm、geo、auth),而且全部Django自己造,开发网站应手的工具Django基本都给你做好了,因此开发效率是不用说的,出了问题也算好找,不在你的代码里就在Django的源码里。
  • 强大的URL路由配置,Django让你可以设计出非常优雅的URL,在Django里你基本可以跟丑陋的GET参数说拜拜。
  • 自助管理后台,admin interface是Django里比较吸引眼球的一项contrib,让你几乎不用写一行代码就拥有一个完整的后台管理界面。

不足之处:

而Django的缺点主要源自Django坚持自己造所有的轮子,整个系统相对封闭,Django最为人诟病的地方有:

  • 系统紧耦合,如果你觉得Django内置的某项功能不是很好,想用喜欢的第三方库来代替是很难的,比如下面将要说的ORM、Template。要在Django里用SQLAlchemy或Mako几乎是不可能,即使打了一些补丁用上了也会让你觉得非常非常别扭。

  • Django自带的ORM远不如SQLAlchemy强大,除了在Django这一亩三分地,SQLAlchemy是Python世界里事实上的ORM标准,其它框架都支持SQLAlchemy了,唯独Django仍然坚持自己的那一套。Django的开发人员对SQLAlchemy的支持也是有过讨论和尝试的,不过最终还是放弃了,估计是代价太高且跟Django其它的模块很难合到一块。

Django 模式及其组件

 

Django的MTV模式本质是各组件之间为了保持松耦合关系,Django的MTV分别代表:

       Model(模型):负责业务对象与数据库的对象(ORM)

       Template(模版):负责如何把页面展示给用户

       View(视图):负责业务逻辑,并在适当的时候调用Model和Template

       此外,Django还有一个url分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template

 

技术分享

Django CentOS7 安装

pip3 install django

 

Django 命令

 

1. 创建一个 django project

django-admin.py startproject mysite

当前目录下会生成mysite的工程,目录结构如下:

技术分享

 

  • manage.py   ----- Django项目里面的工具,通过它可以调用django shell和数据库等。
  • settings.py   ---- 包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量。
  • urls.py         ----- 负责把URL模式映射到应用程序。

2、在mysite目录下创建应用,比如blog:

 

python manage.py startapp blog

 

注意这里出现了一个坑,当我执行以上命令时出现了如下报错:

技术分享

 

进到源码里看看

技术分享

于是就在命令行里导入此模块,发现报错。

到网络上搜了一下,原因是编译安装 Python3 时,缺少 sqlite3 依赖。坑啊!!!

重新安装依赖库,编译吧

yum install sqlite-develmake cleanmake && make  install

重新创建成功:

技术分享

 

3、启动django项目

python manage.py runserver 8080

这样我们的django就启动起来了!当我们访问:http://127.0.0.1:8080/时就可以看到:

技术分享

4、同步更新数据库表或字段

数据库的初始化,也就是给这个项目创建一个库和表

    python manage.py makemigrations    python manage.py migrate

这种方法可以创建表,当你在models.py中新增了类时,运行它就可以自动在数据库中创建表了,不用手动创建。

5、清空数据库

python manage.py flush

这个命令会把项目下的数据的表空完全清空,只剩下一个空表

 

6、创建超级管理员

    python manage.py createsuperuser         # 按照提示输入用户名和对应的密码就好了邮箱可以留空,用户名和密码必填         # 修改 用户密码可以用:    python manage.py changepassword username

 

7、Django 项目环境终端

python manage.py shell

这个命令和 直接运行 python 进入 shell 的区别是:你可以在这个 shell 里面调用当前项目的 models.py 中的 API,对于操作数据的测试非常方便。

 

另外一个

ython manage.py dbshell

Django 会自动进入在settings.py中设置的数据库,如果是 MySQL 或 postgreSQL,会要求输入数据库用户密码。

在这个终端可以执行数据库的SQL语句。如果您对SQL比较熟悉,可能喜欢这种方式。

 

更多的命令帮助

python manage.py

用于查看所有的命令,忘记子名称的时候特别有用。

Python3 之Web 框架:Django 基础