python - django - 初步認識__python

來源:互聯網
上載者:User

django入門好資料:http://www.nowamagic.net/academy/part/13/286


安裝及產生一個工程(網站)

查詢其他資料,主要有以下幾個重要的命令:

django-admin.py startproject mysite : 產生一個project。

manage.py runserver : 啟動剛才產生的mysite網站,通過http://127.0.0.1:8000/就可以訪問了。


Django架構裡的MVC思想

摘自:http://www.nowamagic.net/academy/detail/1318213

讓我們來研究一個簡單的例子,通過該執行個體,你可以分辨出,通過Web架構來實現的功能與之前的方式有何不同。 下面就是通過使用Django來完成以上功能的例子: 首先,我們分成4個Python的檔案,(models.py , views.py , urls.py ) 和html模板檔案 (latest_books.html )。

models.py:

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

views.py:

# views.py (the business logic)from django.shortcuts import render_to_responsefrom models import Bookdef 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:

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

latest_books.html:

# 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 是一種軟體開發的方法,它把代碼的定義和資料訪問的方法(模型)與請求邏輯 (控制器)還有使用者介面(視圖)分開來。
這種設計模式關鍵的優勢在於各種組件都是 鬆散結合 的。這樣,每個由 Django 驅動 的Web應用都有著明確的目的,並且可獨立更改而不影響到其它的部分。 比如,開發人員 更改一個應用程式中的 URL 而不用影響到這個程式底層的實現。 設計師可以改變 HTML 頁面 的樣式而不用接觸 Python 代碼。 資料庫管理員可以重新命名資料表並且只需更改一個地方,無需從一大堆檔案中進行尋找和替換。


MVC的View和Control部分的hello world

摘自:http://www.nowamagic.net/academy/detail/1318235


一個 Django 項目包含的檔案

使用 startproject 命令建立一個目錄,會產生以下 4 個檔案:

__init__.py :讓 Python 把該目錄當成一個開發包 (即一組模組)所需的檔案。 這是一個空檔案,一般你不需要修改它。
manage.py :一種命令列工具,允許你以多種方式與該 Django 項目進行互動。 鍵入python manage.py help,看一下它能做什麼。 你應當不需要編輯這個檔案;在這個目錄下產生它純是為了方便。
settings.py :該 Django 項目的設定或配置。 查看並理解這個檔案中可用的設定類型及其預設值。
urls.py:Django項目的URL設定。 可視其為你的django網站的目錄。 目前,它是空的。
儘管這些的檔案很小,但這些檔案已經構成了一個可啟動並執行 Django 應用。

第一個基於 Django 的頁面: Hello World

正如我們的第一個目標,建立一個網頁,用來輸出這個著名的樣本資訊:Hello World (或 Hello NowaMagic)
如果你曾經發布過Hello world頁面,但是沒有使用網頁架構,只是簡單的在hello.html文字檔中輸入Hello World,然後上傳到任意的一個網頁伺服器上。 注意,在這個過程中,你已經說明了兩個關於這個網頁的關鍵資訊: 它包括(字串 "Hello world")和它的URL( http://www.example.com/hello.html , 如果你把檔案放在子目錄,也可能是 http://www.example.com/files/hello.html)。
使用Django,你會用不同的方法來說明這兩件事 頁面的內容是靠view function(視圖函數) 來產生,URL定義在 URLconf 中。首先,我們先寫一個Hello World視圖函數。
1. 製作視圖
首先我們在 startproject 製作的 mysite 檔案夾中,建立一個叫做 views.py 的空檔案。也就是在 __init__.py 這些檔案的同級目錄中。
這個Python模組將包含這一章的視圖。 請留意,Django對於view.py的檔案命名沒有特別的要求,它不在乎這個檔案叫什麼。但是根據約定,把它命名成view.py是個好主意,這樣有利於其他開發人員讀懂你的代碼。

from django.http import HttpResponsedef hello(request):    return HttpResponse("Hello NowaMagic")
OK,就這麼簡單,視圖做好了。
我們逐行逐句地分析一遍這段代碼:
首先,我們從 django.http 模組匯入(import) HttpResponse 類。參閱後面的附錄瞭解更多關於 HttpRequest 和 HttpResponse 的細節。 我們需要匯入這些類,因為我們會在後面用到。
接下來,我們定義一個叫做hello 的視圖函數。
每個視圖函數至少要有一個參數,通常被叫作request。 這是一個觸發這個視圖、包含當前Web請求資訊的對象,是類django.http.HttpRequest 的一個執行個體。在這個樣本中,我們雖然不用 request 做任何事情,然而它仍必須是這個視圖的第一個參數。
注意視圖函數的名稱並不重要;並不一定非得以某種特定的方式命名才能讓 Django 識別它。 在這裡我們把它命名為:hello,是因為這個名稱清晰的顯示了視圖的用意。同樣地,你可以用諸如:hello_wonderful_beautiful_world,這樣難看的短句來給它命名。 在下一小節(Your First URLconf),將告訴你Django是如何找到這個函數的。
這個函數只有簡單的一行代碼: 它僅僅返回一個HttpResponse對象,這個對象包含了文本“Hello world”。
這裡主要講的是: 一個視圖就是Python的一個函數。這個函數第一個參數的類型是HttpRequest;它返回一個HttpResponse執行個體。為了使一個Python的函數成為一個Django可識別的視圖,它必須滿足這兩個條件。 (也有例外,但是我們稍後才會接觸到。)

2. 製作 URLconf
前面我們已經做好了視圖,我們還需要通過一個詳細描述的 URL 來顯式的告訴它並且啟用這個視圖。為了綁定視圖函數和 URL,我們使用 URLconf。
URLconf 就像是 Django 所支撐網站的目錄。 它的本質是 URL 模式以及要為該 URL 模式調用的視圖函數之間的映射表。 你就是以這種方式告訴 Django,對於這個 URL 調用這段代碼,對於那個 URL 調用那段代碼。 例如,當使用者訪問/foo/時,調用視圖函數foo_view(),這個視圖函數存在於Python模組檔案view.py中。
startproject 命令會自動為你建了一份 URLconf(即 urls.py 檔案)。 預設的urls.py會像下面這個樣子:
from django.conf.urls import patterns, include, url# Uncomment the next two lines to enable the admin:# from django.contrib import admin# admin.autodiscover()urlpatterns = patterns('',    # Examples:    # url(r'^$', 'PythonProject.views.home', name='home'),    # url(r'^PythonProject/', include('PythonProject.foo.urls')),    # Uncomment the admin/doc line below to enable admin documentation:    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),    # Uncomment the next line to enable the admin:    # url(r'^admin/', include(admin.site.urls)),)
我們接下來做一些修改,讓它識別對 http://127.0.0.1:8000/hello/ 這個 URL 的識別。很簡單,加上這麼一句即可:
('^hello/$', hello),
現在訪問 http://127.0.0.1:8000/hello/ ,OK,成功顯示:
Hello NowaMagic

預設的URLconf包含了一些被注釋起來的Django中常用的功能,僅僅只需去掉這些注釋就可以開啟這些功能。下面是URLconf中忽略被注釋的行後的實際內容:from django.conf.urls.defaults import *

urlpatterns = patterns('',

讓我們逐行解釋一下代碼:

第一行匯入django.conf.urls.defaults下的所有模組,它們是Django URLconf的基本構造。 這包含了一個patterns函數。
第二行調用 patterns() 函數並將返回結果儲存到 urlpatterns 變數。patterns函數當前只有一個參數—一個空的字串。 (這個字串可以被用來表示一個視圖函數的通用首碼。具體我們將在後面介紹。)
當前應該注意是 urlpatterns 變數, Django 期望能從 ROOT_URLCONF 模組中找到它。 該變數定義了 URL 以及用於處理這些 URL 的代碼之間的映射關係。 預設情況下,URLconf 所有內容都被注釋起來了——Django 應用程式還是白版一塊。
簡單來說,我們只是告訴 Django,所有指向 URL /hello/ 的請求都應由 hello 這個視圖函數來處理。
到這裡,我們已經建立了第一個Django的web頁面。任務完成。


MVC的Model部分和ORM的hello world

配置mysql

安裝mysql-python:略...

django串連mysql,設定settings.py,如下:

DATABASES = {    'default': {        'ENGINE': 'django.db.backends.mysql',        'NAME': 'test111',        'USER': 'root',        'PASSWORD': '123456',         'HOST': '',         'PORT': '3306'    }}
其中NAME是要串連的資料庫名稱。

儲存後可以在python shell中測試是否串連正確
python manage.py shell
>>> from django.db import connection
>>> cursor = connection.cursor()
這步沒有錯誤的話就表示串連正確了







聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.