Django系列教程:二、視圖和Url配置


注明:python版本為3.3.1、Django版本為1.5.1,操作系統為Windows7,其他版本有一些不同的地方讀者可以自行探討。

前一章中,我們解釋了如何建立一個 Django 項目並啟動 Django 開發服務器。 在這一章中,我將通過一個helloworld來講解Django創建動態網頁的基本知識。

目標:創建一個頁面,打印出helloworld

關於視圖View和路由Url的具體含義隨着學習的深入和自己動手編程慢慢加深理解,下面一段話是djangobook2里面的一段。

如果你曾經發布過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視圖函數。

使用上一章我們創建的firstsite文件夾,創建一個名為view.py的文件,該文件放在urls.py的同一目錄下。注意:早期的django書籍並沒有明確說明該文件應該放在什么地方是因為當時的Django只會創建一個文件夾,所有文件都在該文件夾內(包括manage.py)。

view.py代碼如下:

 

from django.http import HttpResponse

def hello(request):
    return HttpResponse("Hello world")

 

這個函數只有簡單的一行代碼: 它僅僅返回一個HttpResponse對象,這個對象包含了文本“Hello world”。一般來說一個視圖對應python的一個函數。

打開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'^$', 'mysite.views.home', name='home'),
    # url(r'^mysite/', include('mysite.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)),
)

注意:不同的是以前版本的Django的urls.py源文件代碼應該是這樣的:

from django.conf.urls.defaults import *

# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()

urlpatterns = patterns('',
    # Example:
    # (r'^mysite/', include('mysite.foo.urls')),

    # Uncomment the admin/doc line below and add 'django.contrib.admindocs'
    # to INSTALLED_APPS to enable admin documentation:
    # (r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    # (r'^admin/', include(admin.site.urls)),
)

這樣你如果按照老版本的書照葫蘆畫瓢去配置則可能出現錯誤,所以最好按照配置文件里面的Example去配置。修改urls.py代碼如下:

from django.conf.urls import patterns, include, url

from mysite.view import hello
urlpatterns=patterns('',
             url(r'^hello/$','firstsite.view.hello',name='hello'),
)

可以看到我是采用了例子里面的第一種方法去配置的,我將#號后面的注釋代碼移除了。下面來解釋一下url(r'^hello/$','firstsite.view.hello',name='hello')的幾個參數吧。
第一個參數是正則表達式(關於詳細的正則表達式教程請百度谷歌),這個參數主要是對url進行判斷,比如上面的意思就是所有以hello/開頭並結尾的url。第二個參數則是對應該url路徑所使用的視圖,第三個參數則是給該視圖命名。

cd進入manage.py目錄,啟動web服務:python manage.py runserver

下面打開瀏覽器輸入:http://127.0.0.1:8000/hello/ 注意hello后面的/不能省略,如果需要省略需更改settings.py,這里暫不做講解,或者更改正則表達式^hello,不過這樣http://127.0.0.1:8000/hello123/ 也會打印出helloworld。

---------------------------------------------------------------------

對於其它情況可能會出現404頁面(前提是debug模式開啟),如何美化你的404頁面其實也很簡單,只要將正則表達式改為^.*$,然后給定一個特定的視圖函數處理就可以了。

今天暫時到這吧,下一章我們將簡單的使用它寫一點小東西。

本人既是python的初學者也是Django的初學者,寫這一系列教程的目的就是為了加深自己的理解,希望大家多多包涵和指教,有什么問題請留言,謝謝。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM