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 "<html><head><title>Books</title></head>"
print "<body>"
print "<h1>Books</h1>"
print "<ul>"
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 "<li>%s</li>" % row[0]
print "</ul>"
print "</body></html>"
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)
<html><head><title>Books</title></hea
d>
<body>
<h1>Books</h1>
<ul>
{% for book in book_list %}
<li>{{ book.name }}</li>
{% endfor %}
</ul>
</body></html>

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

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值