基于Django 和Python 的Web 开发
- 首页 >> Python编程摘要:随着Web 技术的发展和软件工程的日益成熟,人们逐渐提出敏捷开发的要求。但是传统的Web 框架像Struts,Spring,.NET 等由于其复杂性而很难满足人们的要求,于是逐渐出现一些敏捷性Web 框架。Django 是使用Python 开发的优秀Web 框架,作为一款开源的敏捷开发框架,受到越来越多的人的关注。本文主要介绍了Web框架Django 和Python 语言的特点,并以一个简易的博客系统的创建,介绍Django 和Python 在Web 开发中的应用。
1 引言
因特网的发展使得Web 大行其道,当今几乎所有的企业信息化软件以及部分个人桌面都采用了Web 界面。Web 界面已成为和普通GUI 并行的一种选择,这种变化使得对Web 开发框架的选择变得极为重要。在众多的Web 开发框架中,Django /Python———一款开源的 Web 开发框架以其优秀的性能和快捷的开发正越来越引起人们的重视。
2 Python
Python 是一种简单易学、功能强大的编程语言,它有高效率的高层数据结构,简单而有效地实现面向对象编程。Python 简洁的语法和对动态输入的支持,再加上解释性语言的本质,使得它在大多数平台上的许多领域都是一个理想的脚本语言,特别适用于快速的应用程序开发。
2.1 简单
Python 是一种代表简单主义思想的语言。阅读一个良好的Python 程序就感觉像是在读英语一样,Python 的这种伪代码本质是它最大的优点之一,它使你能够专注于解决问题而不是去搞明白语言本身。
2.2 易学
Python 有极其简单的语法, 极其容易上手开源:Python 是FLOSS (自由/开放源码软件)之一。简单地说,可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。
2.3 高层语言
当用Python 语言编写程序的时候,无需考虑诸如如何管理程序使用的内存一类的底层细节。
2.4 可移植性
由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果小心地避免使用依赖于系统的特性,那么所有Python 程序无需修改就可以
在下述任何平台上面运行。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、Vx-Works、PlayStation、Sharp Zaurus、Windows CE 甚至还有
PocketPC。
2.5 解释性
而Python 语言写的程序不需要编译成二进制代码。可以直接从源代码运行程序。在计算机内部,Python 解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算
机使用的机器语言并运行。事实上,由于不再需要担心如何编译程序,如何确保连接转载正确的库等等,所有这一切使得使用Python 更加简单。只需要把Python 程序拷贝到另外一
台计算机上,它就可以工作了,这也使得Python 程序更加易于移植。
2.6 面向对象
Python 既支持面向过程的编程也支持面向对象的编程。在面向过程的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在面向对象的语言中,程序是由数据和功能组合而成的对象构建起来的。与其他主要的语言如C++和Java 相比,Python 以一种非常强大又简单的方式实现面向对象编程。
2.7 可扩展性
如果需要一段关键代码运行得更快或者希望某些算法不公开,可以把部分程序用C 或C++编写,然后在Python 程序中使用它们。
2.8 可嵌入性
可以把Python 嵌入你的C/C++程序,从而向程序用户提供脚本功能。
2.9 丰富的库
Python 标准库确实很庞大。它可以帮助处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、
WAV 文件、密码系统、GUI (图形用户界面)、Tk 和其他与系统有关的操作。只要安装了Python,所有这些功能都是可用的,这被称作Python 的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted 和Python 图像库等。
3 Django
Django 是使用Python 开发的Web 框架。它的架构成为MTV(Model-Template-View),Model 用于数据库处理,Template是模板系统,用于显示处理,View 是控制部分用于Model的处理、数据的加工和模板的调用等工作。由于Django 是使用Python 开发的,所以如果用Django 开发站点,则用Django 库写Python 代码。
3.1 特征
3.1.1 可插入(Plug-in)管理的ApplicationDjango 提供了一个强大的命令行工具django-admin 可以帮用户完成大量的初始化及有关数据库方面的工作。
3.1.2 对象相关的映射
完全在Python 中定义数据模型。可以免费得到一个丰富的,动态访问数据库的API --但如果需要仍然可以写
SQL 语句。
3.1.3 URL 分发
URL 的设计漂亮,cruft-free 没有框架的特定限定。
3.1.4 模版系统
使用DjanGo 强大而可扩展的模板语言来分隔设计、内容和Python 代码。
3.1.5 Cache 系统
可以挂在内存缓冲或其他的框架实现超级缓冲--实现所需要的粒度。
3.1.6 自动化的管理界面
不需要花大量的工作来创建人员管理和更新内容的接界,
DjanGo 可以自动完成。
3.1.7 支持多种数据库
已经支持Postgresql、MySQL、SQLite3、Oracle、ado_
msSQL。
3.1.8 国际化
完全支持多国语言,允许针对应用程序提供特定国家语言的翻译字符
3.2 优势
3.2.1 高级Web 框架
Django 免去了勾践动态Web 站点的痛苦,它把常见的Web开发的问题抽象出来并提供了对频繁编程任务的捷径。
3.2.2 提供快速开发
Django 可以极大程度提高开发速度,由于采用Python 语言,以为用几天、几星期、甚至几年的站点,用Django 几个小时就可以做好。
3.2.3 干净实效的设计
Django 严谨的维护,干净的设计,它所有的代码让开发的Web 程序遵循最佳实践,它的哲学是:Django 很轻松地做对事情。
4 应用
Django 是一种十分高效的敏捷Web 框架,从2005 年发布到现在已经出现了大量基于Python 和Django 开发的站点。以一个简易Blog 开发为例,来讲述基于Python 和Django 的Web开发流程。该Blog 的开发流程如图1 所示。具体的开发流程如下:
(1)创建工程
使用下面的命令创建一个project:
创建工程
配置数据库
创建应用
创建Model
创建View
创建模板
更新数据库
添加URL 映射
(2)配置数据库
进入webblog 目录,修
改settings.py:DATABASE_ENGINE='sqlite3'DATABASE_NAME='webblog.db'
(3)创建应用
使用下面的命令创建一个app:
manage.pystartappblog
修改setting.py,把新创建的app 和模板加进去:
TEMPLATE_DIRS = (
" d:/webblog/" ,
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'webblog.blog',
'django.contrib.admin',)
4)创建Model
进入blog 目录,修改models.py:
class Reporter (models.Model) :
full_name = models.CharField (maxlength=70)
def __str__ (self) :
return self.full_name
class Admin:
pass
class Article (models.Model) :
pub_date = models.DateTimeField ()
headline = models.CharField (maxlength=200)
article = models.TextField ()
reporter = models.ForeignKey (Reporter)
def __str__ (self) :
return self.headline
class Admin:
pass
(5)创建View
修改view.py:
from webblog.blog.models import *
from django.shortcuts importrender_to_response
from django.template import Context, loader
from django.http import HttpResponse
def index (request) :
article_list = Article.objects.all ()
returnrender_to_response ('htmls/index.html', { 'article_list':
article_list})
(6)创建模板
在webblog 目录下创建htmls 目录,进入该目录,创建index.
html:
{% extends " base.html" %}
{% block title %} Articles {% endblock %}
{% block content %}
<h1>Articles</h1>
{% for article in article_list %}
<p>Headline : {{ article.headline }}</p>
<p>By {{ article.reporter.full_name}} </p>
<p>Published {{article.pub_date|date:" F j, Y" }} </p>
{% endfor %}
{% endblock %}
创建base.html:
<html>
<head>
<title> {% block title %} {% endblock%} </title>
</head>
<body>
{% block content %} {% endblock %}
</body>
</html>
(7)更新数据库
在weblog 目录下,执行:
manage.py syncdb
(8)添加URL 映射
修改url.py,将访问地址加入进去:
from django.conf.urls.defaults import *
urlpatterns = patterns ('',
(r'^$','blog.views.index') ,
(r'^admin/', include('django.contrib.admin.urls')) ,
)
这样一个简单的Blog 系统就搭建成功了,整个系统的开发用了不到30 分钟,基于Django 和Python 的Web 开发,能够很好地满足快速开发的要求。
5 结语
Django 是一个优秀的平台。它提供了Web 开发所必需的组件和工具,极大地方便用户的开发,并辅之功能强大的Web 开发语言Python。Django/Python 构成了一个优良的Web开发架构和平台,足以用来实现功能强大和易维护的Web应用。