Welcome to Django!
实验简介
Django是一个可以使Web开发工作更加高效愉快的Web开发框架。Django可以让你用最小的代价构建和维护更高质量的Web应用程序。
从好的方面来看,Web开发是一项有趣和充满创造性的事;但是另一方面,Web开发又可能是一项繁琐令人生厌的工作。通过减少重复的部分,Django能让你专注于Web程序的核心,从而让开发更加有趣。为了达到这个目标,Django提供了通用Web开发模式的高度抽象,一些常见任务的快捷方式,还为“如何解决问题”提供了清晰明了的约定。同时,Django尝试留下一些方法,来让你根据自己的需要在framework之外来开发。
关于发音
Django, 应该读作jan go,读音演示 D是不发音的~~~发音的~~~音的~~~的~~~
MVC设计模式
让我们来研究一个简单的例子,通过这个实例,你可以看出用Web框架方式与之前的做法有什么不同。首先,我们将内容分隔到3个Python的文件中models.py、views.py、urls.py 和一个模板文件( latest_books.html )。
models.py (数据库表)
from django.db import models
class Book(models.Model):
name = models.CharField(max_length=50)
pub_date = models.DateField()
views.py (业务逻辑层)
from django.shortcuts import render
from models import Book
def latest_books(request):
book_list = Book.objects.order_by('-pub_date')[:10]
return render(request, 'latest_books.html', {'book_list': book_list})
urls.py (URL配置)
from django.conf.urls.defaults import *
import views
urlpatterns = patterns('',
(r'^latest/$', views.latest_books),
)
latest_books.html (模板文件)
<html><head><title>Books</title></head>
<body>
<h1>Books</h1>
<ul>
{% for book in book_list %}
<li>{{ book.name }}</li>
{% endfor %}
</ul>
</body></html>
现在,我们不需要太专注语法细节,只需要注意这里实现的方式。 这里要重点提到的是 重点分离 (separation of concerns):
models.py 中用一个Python类来描述一个数据库中的表,被称作 模型 (model)。通过这个类,你可以通过简单的Python代码来对数据库中的记录进行增删改查(创建,检索,更新,删除),而无需你去写一条一条的SQL语句。
views.py 中包含了页面的业务逻辑。 latest_books() 方法叫做 视图 (view)。
urls.py 指定视图和URL的关系,即什么样的URL调用哪个的视图。在这个例子中, /lastest/ URL 会调用 latest_books() 这个方法。换句话说如果你的域名是example.com,任何人访问http://example.com/latest/
就会调用 latest_books() 。
latest_books.html 是HTML模板,它定义了这个页面的设计,模板中使用了带基本逻辑语句的模板语言,比如 {% for book in book_list %}
这部分代码松散地遵循了模型-视图-控制器(MVC)的设计模式。简单来说,MVC是一种软件开发的方法,它把定义和访问 数据的代码(模型 model)和控制请求逻辑的代码(控制器 controller)和用户接口(视图 view)分割开来。我们会在以后更加深入地讨论MVC。
这个方法最重要的优点在于它的各个部分都是 松耦合 (loosely coupled)的。这样用Django开发的Web程序中每个部分都有它自己单一的目的,并且可以单独地被修改而不会影响到其他部分。比方说,一个程序员可以在不影响底层实现的情况下修改URL;设计师可以不需要接触Python的代码就修改页面的HTML;数据库管理员在重命名数据表之后只需要修改一个地方就可以了,而不需要在一大堆文件中查找替换。
Django的版本
本课程基于Django 1.4
Django的开发尽量保证版本向后兼容,但是仍然可能会添加一些不向后兼容的改变。每个版本的更新通常都会 记录在relase note中,你可以到https://docs.djangoproject.com/en/dev/releases/1.X (X请用相应的版本替换,eg:1.4、1.7)查看。
一点提示
本课程基于《The Django Book》改编,想查看更多的资料: 老版本django book: http://djangobook.py3k.cn/2.0/ 新版本django book(翻译中):http://djangobook-cn.readthedocs.org/en/latest/ 在学习过程中,想了解更多,必须得官方文档啊! https://www.djangoproject.com/
有问题,要提问呀! 社区邮件列表,你值得拥有: https://groups.google.com/forum/#!forum/django-users
Django的一个最大的优势就是她有一群乐于助人的人活跃在Django社区里。 你在Django中遇到的任何问题,从安装,程序设计,数据库设计到部署,都可以在上面寻求帮助。
django-users邮件列表上面有上万的Django用户,活跃着讨论问题。可以到 http://www.djangoproject.com/r/django-users 免费注册。 如果碰到棘手的问题,想要得到及时的回复,可以到Django IRC channel寻求帮助。加入方法是在Freenode IRC network上加入#django。
上面那个链接,一看就是要穿越长城的, 如果能量不足,Django中国社区 :)
《The Django Book》是在Django1.0的基础来的,所以有很多的新特性并没有加入,特别是在模板和模型里边,所以本课程中的东西只是入门而已,请一定去翻看对应的django版本的官方文档,尽管他是英文的。
小结
Django是用Python实现的一个Web开发框架,它遵从MVC模式,能快速地开发Web应用。