Django學習--介紹Django

Django:一個可使web開發工做愉快而且高效的web框架。html

Django提供了經過web開發模式的高度抽象,經過這次學習,明白兩個方面:第一,深度解釋Django到底做了哪些工做以及如何用Django構建web應用;第二,在適當地方討論更高級的概念,並解釋如何在本身的項目中高效使用這些工具。經過學習,學會快速開發功能強大網站的技巧,而且代碼清晰,易於維護。python

首先,框架是什麼?web

若是不使用框架,python開發web,最簡單,原始和直接的辦法就是使用CGI標準,這種方法是這麼工做的:首先作一個python腳本,輸出html代碼,而後保存成.cgi擴展名的文件,經過瀏覽器訪問文件。數據庫

好比,用python cgi腳本顯示數據庫中最新出版的10本書:django

#! /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.connection(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[10]

print "</ul>"
print "</body></html>"

connection.close()

首先,用戶請求cgi,腳本代碼打印Content-Type行,後面跟着換行。再接下來是一些html的起始標籤,而後鏈接數據庫並執行一些查詢操做,獲取最新的十本書。在便利這些書的同時,生成一個書名的html列表項,最後輸出html結束標籤並關閉數據庫鏈接。 設計模式

儘管實現簡單,仍是有些問題和不便的地方。瀏覽器

--應用中有多處須要鏈接數據庫會怎樣?每一個獨立的cgi腳本不該該重複寫數據庫鏈接的代碼,比較實用的辦法是寫一個共享函數,能夠被多個代碼調用。框架

--初始化和釋放相關的工做應該交給通用的框架來完成函數

--若是代碼被重用到一個符合的環境中,每一個頁面對應獨立的數據庫和密碼麼?工具

--若是web設計師,徹底沒有python開發經驗,可是有須要從新設計頁面的話,又將發生什麼呢?一個字符寫錯了,可能致使整個應用崩潰。理想的狀況,頁面顯示的邏輯從數據庫中讀取書本記錄分隔開來,這樣web設計師從新設計不會 影響到以前的業務邏輯。

Django的MVC設計模式

Django哦你改過3個python文件和html模板文件來完成以上功能。

分別是models.py ,views.py ,urls.py和latest_books.html

#models.py (the datebase tables)

from django.db import models

class Book(models.Model):
         name = models.CharField(max_length=50)
         pub_date=models.DateField()

#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})

#urls.py (the URL configuration)

from django.conf.urls.defaults import *
import views

urlpatterns=pattern(''.(r'^latest/$',view.latest_books),)

#latest_books.html (the template)
<html><head><title>Books</title></head>
<body>
<h1>Books</h1>
<ul>
{% for book in book_list %}
<li> {{book.name}}</li>
{% endfor %}
</ul>
</body></html>

不用關心語法細節;秩序關注分隔後的幾個文件:

--models.py 主要用一個python類來描述數據表,成爲模型(model)。運用這個類,能夠經過簡單的python代碼來建立、檢索、更新、刪除數據庫中的記錄而無需寫一條又一條SQL語句。

--views.py文件包含了頁面的業務邏輯。latest_books()函數叫作視圖。

--urls.py指出了什麼樣的URL調用什麼的視圖,/latest/URL將會調用latest_books()這個函數,換句話說,若是域名是example.com,那麼瀏覽網址http://example.com/latest/將會調用latest_books()這個函數

--latest_books.html是html模板,描述了這個頁面是如何設計的,使用帶基本邏輯聲明的模板語言,如{% for book in book_list %}。

結合起來,這種模式成爲模型-視圖-控制器(MVC),簡單說,MVC是一種軟件開發的方法,把代碼的定義和數據訪問的方法(模型)與請求邏輯(控制器)還有用戶接口(視圖)分開來。

相關文章
相關標籤/搜索