Python CGI脚本和Django框架的对比

目录

Python CGI脚本

过程

优缺点

Django框架的MVC设计模式

过程

优点


Python CGI脚本

过程

1、用户请求CGI, 脚本代码打印Content、Type行、换行以及一些 HTML的起始标签;

2、连接数据库并执行一些 查询操作,获取最新的 十本书;

3、 在遍历这些书的同时, 生成一个书名的HTML 列表项;

4、输出HTML的结束标签并且关闭数据库连接。

#!/usr/bin/env python
import MySQLdb
print "Content-Type: text/html\n"
print "Books"
print ""
print "

Books

" print "
    " connection = MySQLdb.connect(user='me', passwd='letmein', db='my_db') cursor = connection.cursor() cursor.execute("SELECT name FROM books ORDER BY pub_date DESC LIMIT 10") for row in cursor.fetchall(): print "
  • %s
  • " % row[0] print "
" print "" connection.close():

优缺点

1、代码简单易懂,代码方便部署

2、若应用中有多处需要连接数据库,每个独立的CGI脚本都需要重复写数据库连接的代码

3、投入过多精力去关注如何输出Content-Type以及完成所有操作后 关闭数据库

4、一个字符错误可能导 致整个应用崩溃。

Django框架的MVC设计模式

过程

1、latest_books.html 是 html 模板,它描述了这个页面的设计是如何的。使用带 基本逻辑声明的模板语言,如{% for book in book_list %}

# latest_books.html (the template)
Books

Books

    {% for book in book_list %}
  • {{ book.name }}
  • {% endfor %}

2、 urls.py 指出了什么样的 URL 调用什么的视图。 在这个例子中 /latest/ URL 将 会调用 latest_books() 这个函数。 换句话说,如果你的域名是example.com, 任何人浏览网址http://example.com/latest/将会调用latest_books()这个函数。

# urls.py (the URL configuration)
from django.conf.urls.defaults import *
import views
urlpatterns = patterns('',
(r'^latest/$', views.latest_books),
)

3、 views.py文件包含了页面的业务逻辑。latest_books()函数叫做视图。

#views.py (the business logic)
from django.shortcuts import 
render_to_response
from models import Book
def latest_books(request):
book_list = Book.objects.order_by('-pub_date')[:10]
return render_to_response('latest_books.html', {'book_list': book_list})

4、 models.py文件主要用一个Python类来描述数据表,称为模型(model) 。运用 这个类,你可以通过简单的 Python 代码来创建、检索、更新、删除数据库中 的记录而无需写一条又一条的SQL语句。

# models.py (the database tables)
from django.db import models
class Book(models.Model):
name = models.CharField(max_length=50)
pub_date = models.DateField()

优点

1、把代码定义和数据访问方法(模 型)与请求逻辑 (控制器)还有用户接口(视图)分开

2、以改变HTML页面的样式而不用接触 Python 代码

3、更改一个应用程序中的 URL 而不用影响到这个程序底层的实现

4、数据库管理员可以重新命名数据表并且只需更改一个地方,无需从一大堆文件中 进行查找和替换

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Python相关,Django)