Django创建Web站点

使用Django创建Web站点
19.1常见的Web开发框架
19.1.1 Python与Web
随着Internet的迅速发展,越来越多的应用程序从传统的C/S(客户端/服务端)架构转向了B/S(浏览器/服务端)架构。在互联网发展的早期,由于当时计算机性能网页的业务逻辑相对简单,所以当时的Web开发人员把网页HTML页面内容和业务逻辑混合在一个文件中编写。然而随着计算机性能的提升,这些Web应用的业务逻辑变得越来越复杂,常见的有HTML5页面、网页游戏、网页版微软Office,甚至出现了像Chrome OS这样的围绕浏览器开发的操作系统,显然,像以前一样一个文件、一个网页、一个功能的方式已经不再适用于现代的Web开发了。为了让Web开发人员能够开发更复杂的应用逻辑而不是处理简单的HTML,各式各样的Web开发框架应运而生Web开发框架能够帮助用户处理许多和HTTP相关的操作,例如URL路由解析、POST和GET参数获取等等。当然,最重要的是Web框架已经定义了一系列的处理方式和模板,开发人员只需要开发数据应用的业务逻辑即可。并且大部分Web开发框架还有分层的作用,使业务逻辑可以细化到不同的逻辑层次,从而实现组件化、模块化。
Python语言中已经有很多发展成熟的Web开发框架。这其中有“微框架”设计的Bottle、Flask、CherryPy,拥有异步非阻塞IO的Tornado、Sanie,功能大而全的Django、Pyranid、TurboGears和Web2py,也有基于现有Web开发框架再次开发的Dash、DjangoRESTframework等等。本章将会介绍一些常见的Web开发框架。
19.1.2 Flask
Flask是一个使用Python、基于Werkzeug WSGL工具箱和Jinja2模板引擎编写的轻量级Web应用框架。Flask使用BSD授权。
Flask被称为“Microframexork”,因为它使用简单的核心,用Extension增加其他功能。Flask没有默认使用的数据库、窗体验证工具。然而,Flask保留了扩增的弹性,可以用Flask-extension加人这些功能:ORM、窗体验证工具、文件上传和各种开放式身份验证技术。
2004年,一群来自世界各地的Python热衷者组成了Pocoo团队,Flask的作者正是来自Pocon的阿明·罗拉撤(Armin Ronacher)。Flask本来只是作者的一个愚人节玩笑,不过后来大受欢迎,进面成为一个正式的项目,它的设计受到了基于Ruby语言的Sinatra项目的影响。Flask的特色有:
内置开发用服务器和调试器。
集成单元测试。
RESTful请求分发。
使用Jinja2模板引擎。
支持安全Cookies(客户端会话)。
100%WSGI1.0兼容。
基于Unicode
详细的文件、教学。
Google App Engine兼容。
可用Extension增加其他功能。
19.1.3 Tornado
Tomado的完整名称是Tornado Web Server,是一个用Python语言写成的Web服务器兼Web应用框架,由FriendFeed公司在自己的网站FriendFeed中使用,被Facebook收购以后,该框架才以开源软件的形式开放给大众。
作为Web框架,Tornado十分轻量,类似于另一个Python Web框架Web.py,其拥有异步非阻塞IO的处理方式。
作为Web服务器,Tornado有较为出色的抗负载能力,官方用Nginx反向代理的方式部署Tornado和其他Python Web应用框架进行对比,结果它能承受的最大浏览量超过第二名近40%。
Tornado使用了异步非阻塞IO的编程方式,拥有强大的并发性能,但是这也带来了不少副作用。不同于其他Web开发框架,有许多第三方的数据库引擎不能直接应用在Tornado上。幸好Tornado官方和许多第三方开发者开发了不少适合Tornado的数据库引擎,不过相对于其他Web框架,Tornado的兼容性就没有任何优势了。
19.1.4 Django
Django是一个开放源代码的Web应用框架,由Python与成。Django采用了MVT的软件设计模式,即模型Model、视图View和模板Template。Django最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,并于2005年7月在BSD许可证下发布,这套框架以出生于比利时的吉卜赛爵士吉他手强哥·莱恩哈特(Django Reinhardt)的名字来命名
Django的主要目标是让开发复杂的、数据库驱动的网站变得简单 Djiango注重组件的重用性和“可插拔性”、敏捷开发和DRY法则(Don’t RepeatYouself)。在Diango中Python被普遍使用,甚至包括配置文件和数据模型。
Django框架的核心包括:一个面向对象的映射器,用作数据模型(以Python类的形式定义,和关系性数据库间的介质;一个基于正则表达式的URL分发器;一个视图系统,用于处理请求;一个模板系统。
核心框架中还包括:
一个轻量级的、独立的Web服务器,用于开发和测试。
一个表单序列化及验证系统,用于HTML表单和适于数据库存储的数据之间的转换一个缓存框架,并有几种缓存方式可供选择。
中间件支持,允许对请求处理的各个阶段进行干涉。
内置的分发系统允许应用程序中的组件采用预定义的信号进行相互间的通信。一个序列化系统,能够生成或读取采用XML或JSON表示的Django模型实例。一个用于扩展模板引擎的能力的系统。
Django包含了很多应用在它的contrib包中,包括:
一个可扩展的认证系统。
动态站点管理页面。
一组产生RSS和Atom的工具。
一个灵活的评论系统
产生Google站点地图(Google Sitemaps)的工具。
防止跨站请求伪造(Cross-Site Request Forgery)的工具。
一套支持轻量级标记语言(Textile和Markdown)的模板库。
一套协助创建地理信息系统(CIS)的基础框架。
Django于2008年6月17日正式成立基金会。
19.1.5 Pyramid
Pyramid是一个基于模型、视图、控制器(MVC)架构模式的开源WSGI Web框架。最初该项目是一个名为Pylons的单-Web框架,但在与新名称Pyramid下的repoze.bfg框架合并之后,Pylons项目现在由多个相关的Web应用程序技术组成,其主要目标是以最小的代价做最多的事。
Pyramid最大的特点就是灵活性和可扩展性(尤其和Django相比)。在使用Pyramid时,程序员可以自由地选择使用什么样的数据库、URL结构和模板风格等等,可以不费劲地利用SQLAI创建传统的RDBMS应用。和Flask一样,Pyramid支持多种类型的模板语言和引擎,包括Jinja2和Mako,而且它自己也有内置解决方案。甚至,它还兼容Chameleon——一个便捷的、通用的ZPT模板工具。
Pyramid被大家广泛认可的优点包括:可以将一个完整的网站生成一个单一的文件;可修改的模板;可配置的资源;灵活的身份验证和授权;高级的引导工具——pereate;基于view的方法;支持命令型和陈述型的配置语法;HTTP缓存;内建Session会话等等。Pyramid是目前流行的构建大中小型应用的框架,但也正是因为Pyramid具有强大的灵活性,可能会让一些有“选择困难症”的初学者纠结于功能使用选择上,如果选择不好,可能会掉进一个又一个的坑里去。
19.1.6 选择合适的框架。
每个Web开发框架都有着各自的特性和使用范围,面对众多的Web开发框架,开发者需要根据项目的需求以及以后可能的扩展来选择适合自己的Web开发框架。
如果只是想开发一个简单的Web应用或者仅仅只是一个雏形,那么可以选择比较轻量级的Web开发框架,比如Flask、Botle等。选择这些“微框架”可以使用简单的语法迅速完成简单的功能。但是与此同时,当需求增加的时候,这些开发框架的特性就带来了限制。因为其中许多功能都需要开发者自己来实现,无形中反而增加了不少工作量。
而如果开发的项目从一开始就是一个相当复杂的项目,需要实现许多功能,则可以使用像Django、Pyramid这样的框架。因为像Django这类框架本身实现了一个Web应用所需要的大部分功能。功能丰富的组件是在实际应用中不断扩展的,以满足Web应用中的大部分需求。但是也正因为其组件繁多,功能强大,导致这种“全栈”的Web开发框架很难掌握,需要长期地投入大量时间来学习。
各个Web开发框架都有自己的优势和劣势,所以要根据项目的实际需求来选择合适的Web开发框架。
19.2开发环境介绍
19.2.1 Django安装
Django是一个纯Python(部分网页模板会涉及HTML、CSS和JavaScript)的Web开发框架。由于Python语言的跨平台特性,使Django可以很方便地安装在Windows、Linux、Mac OS以及其他的操作系统上。并且Django是一个“全栈”框架,其本身已经实现了Web开发所需要的组件,所以只需要Django就可以完成一个完整的Web开发了。
Django项目的主页为https://www.djangoproject.com/。从2.0开始Django就不再支持Python2了,如果有用户还在使用Python2的话,可以安装1.11版本。1.11版本是一个长期支持版本(LTS版本),也是最后一个同时支持Python2和Python 3的版本,官方承诺将会维护1.11版本至2020年。所以本节将采用1.11版本进行讲解。
安装Django和安装其他第三方Python模块的步骤是一样的:
Linux以及Mac用户可以使用命令(请使用管理员权限运行):
pip3 install Django1.11
Windows平台下的Anaconda用户可以在打开Anaconda Prompt后使用命令:
conda install Django
1.11
安装完毕后可以尝试引入Django模块并打印版本信息来确认是否安装成功:
01#!/usr/bin/env python
02#--coding:UTF-8--
03
04 import django
05
06 print(django.get_version())
如果一切正常则会打印出安装的Django版本号。这个例子的输出结果如下:
1.11.3
19.2.2创建Django项目
在安装完Django之后,就可以开发Web应用了。Django框架提供了一种迅速的方法来创建功能丰富的Web应用,那就是django-admin.py。在Django成功安装完之后在系统中创建django-admin命令。此命令中包含许多子命令选项,可以通过这些选项来操作项目。在命令行中输入命令“Django-admin.py help"可以获得如下提示:
(base)C:\WINDOWS\system32>django-admin.py
Type 'django-admin.py-script.py help ’ for help on a specific subcommand.
Available subcommands:
[django]
check
compilemessages
createcachetable
dbshell
diffsettings
dumpdata
flush
inspectdb
loaddata
makemessages
makemigrations
migrate
runserver
sendtestemail
shell
showmigrations
sqlflush
sqlmigrate
sqlsequencereset
squashmigrations
startapp
startproject
test
testserver
Note that only Django core commands are listed as settings are not properly configured (error: Requested setting INSTALLED_APPS, but se

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值