用过python的小伙伴们都会有这样的体会,简洁快速的语法强大的库能让我们毫不费力,又能十分畅快的写出我们想要的程序。Pythonconsole 中输入import this就能看到python的哲学。当然python也有很多这样“简单就是美”的web框架,比如web2py、web.py、flask、Tornado、Pecan、CherryPy等等。针对不同的框架,网友们也有着不同的观点。我们这边不对这点进行讨论,“没有不好的框架,只有不好的程序员”:)我们公众号就是致力于让小伙伴了解学习Django这个web框架。
Django是十分优秀的web框架,我们都知道web开发是十分令人激动的有十分富有创造性,但是开发过程也是很繁琐,令人生厌。Django对于开发模式进行了高度抽象化,让你可以专注于web开发中那些有趣而又是关键性的东西。
MVC设计模式
Django采用MVC的设计模式,Django说是自己使用了MVT的架构,其含义其实是model– view - template。现在有些不理解也没有关系,之后我们会对于MVT有详细的学习。MVC是一种软件开发的方法,它把代码的定义和数据访问的方法(模型)与请求逻辑(控制器)还有用户接口(视图)分开来。这种设计模式的有点就在于各个组件都是松散结合的,就是我们常说的低耦合。使用django开发的web应用都有这样的特点:可以修改一个层级中的内容,同时又不影响其他部分。前端开发着可以修改页面样式(template中的内容),不需要关心python代码(view或是model)。下面我们来看一下django的小例子:
首先,我们分成4个Python的文件,(models.py,views.py,urls.py)和html模板文件(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_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})
urls.py:
from django.conf.urls.defaults import * import views urlpatterns = patterns('', (r'^latest/$', views.latest_books), )
lastest_books.html:
Books Books
-
{% for book in book_list %}
- {{ book.name }} {% endfor %}
本例子来自djangobook 2.0 我们不用开关心语法,之后会详细介绍,先对于django项目结构有一个直观的了解。
参考文献:The Django Book 2.0