Python的Web框架有上百个,比它的关键字还要多。所谓Web框架,就是用于开发Web服务器端应用的基础设施(通常指封装好的模块和一系列的工具)。事实上,即便没有Web框架,我们仍然可以通过socket或CGI来开发Web服务器端应用,但是这样做的成本和代价在实际开发中通常是不能接受的。通过Web框架,我们可以化繁为简,同时降低创建、更新、扩展应用程序的工作量。Python的Web框架中比较有名的有:Flask、Django、Tornado、Pyramid、Bottle、Web2py、web.py等。
在基于Python的Web框架中,Django是所有重量级选手中最有代表性的一位,开发者可以基于Django快速的开发可靠的Web应用程序,因为它减少了Web开发中不必要的开销,对常用的设计和开发模式进行了封装,并对MVC架构提供了支持(MTV)。许多成功的网站和App都是基于Django框架构建的,国内比较有代表性的网站包括:知乎、豆瓣网、果壳网、搜狐闪电邮箱、101围棋网、海报时尚网、背书吧、堆糖、手机搜狐网、咕咚、爱福窝、果库等。
Django诞生于2003年,它是一个在真正的应用中成长起来的项目,由劳伦斯出版集团旗下在线新闻网站的内容管理系统(CMS)研发团队编写(主要是Adrian Holovaty和Simon Willison),以比利时的吉普赛爵士吉他手Django Reinhardt来命名,在2005年夏天作为开源框架发布。使用Django能用很短的时间构建出功能完备的网站,因为它代替程序员完成了所有乏味和重复的劳动,剩下真正有意义的核心业务给程序员,这一点就是对DRY(Don't Repeat Yourself)理念的最好践行。
快速上手
准备工作
- 检查Python环境:Django 1.11需要Python 2.7或Python 3.4以上的版本;Django 2.0需要Python 3.4以上的版本。 $ python3 --version $ python3 >>> import sys >>> sys.version >>> sys.version_info
- 创建项目文件夹并切换到该目录,例如我们要实例一个OA(办公自动化)项目。 $ mkdir oa $ cd oa
- 创建并激活虚拟环境。
$ python3 -m venv venv $ source venv/bin/activate
注意:Windows系统下是执行
venv/Scripts/activate.bat
批处理文件。 - 更新包管理工具pip。
(venv)$ python -m pip install --upgrade pip
注意:请注意终端提示符发生的变化,前面的
(venv)
说明我们已经进入虚拟环境,而虚拟环境下的python和pip已经是Python 3的解释器和包管理工具了。 - 安装Django。 (venv)$ pip install django 或指定版本号来安装对应的Django的版本。 (venv)$ pip install django==1.11
- 检查Django的版本。 (venv)$ python -m django --version (venv)$ django-admin --version (venv)$ python >>> import django >>> django.get_version() 下图展示了Django版本和Python版本的对应关系,在我们的项目中我们选择了最新的Django 2.0的版本。 Django版本Python版本1.82.7、3.2、3.3、3.4、3.51.9、1.102.7、3.4、3.51.112.7、3.4、3.5、3.62.03.4、3.5、3.6说明:在创建这篇文章时Django 2.1版本尚未正式发布,因此我们的教程使用了2.0.5版本。
- 使用
django-admin
创建项目,项目命名为oa。 (venv)$ django-admin startproject oa . 注意:上面的命令最后的那个点,它表示在当前路径下创建项目。 执行上面的命令后看看生成的文件和文件夹,它们的作用如下所示:manage.py
: 一个让你用各种方式管理 Django 项目的命令行工具。oa/__init__.py
:一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包。oa/settings.py
:Django 项目的配置文件。oa/urls.py
:Django 项目的 URL 声明,就像你网站的“目录”。oa/wsgi.py
:作为你的项目的运行在 WSGI 兼容的Web服务器上的入口。
- 启动服务器运行项目。 (venv)$ python manage.py runserver 在浏览器中输入http://127.0.0.1:8000访问我们的服务器,效果如下图所示。
说明1:刚刚启动的是Django自带的用于开发和测试的服务器,它是一个用纯Python编写的轻量级Web服务器,但它并不是真正意义上的生产级别的服务器,千万不要将这个服务器用于和生产环境相关的任何地方。
说明2:用于开发的服务器在需要的情况下会对每一次的访问请求重新载入一遍Python代码。所以你不需要为了让修改的代码生效而频繁的重新启动服务器。然而,一些动作,比如添加新文件,将不会触发自动重新加载,这时你得自己手动重启服务器。
说明3:可以通过python manage.py help
命令查看可用命令列表;在启动服务器时,也可以通过python manage.py runserver 1.2.3.4:56789
来指定绑定的IP地址和端口。
说明4:可以通过Ctrl C来终止服务器的运行。
- 接下来我们进入项目目录oa并修改配置文件settings.py,Django是一个支持国际化和本地化的框架,因此刚才我们看到的默认首页也是支持国际化的,我们将默认语言修改为中文,时区设置为东八区。 (venv)$ cd oa (venv)$ vim settings.py # 此处省略上面的内容 # 设置语言代码 LANGUAGE_CODE = 'zh-hans' # 设置时区 TIME_ZONE = 'Asia/Chongqing' # 此处省略下面的内容
- 回到manage.py所在的目录,刷新刚才的页面。
(venv)$ cd ..
(venv)$ python manage.py runserver