準備好好學習一下python,就從django開始吧,順帶了解一下網站的開發。今天在windows上安裝了python,django,以及酷炫吊的IDE——pycharm,學習資料主要是《the Django Book 2》,hello world的程序就不要詳細敘述了,比較簡單而且網上有很多例程,主要通過動態內容的實驗對django開發具有一個大致的認識。
一、新建工程
第一個目標是創建一個顯示當前日期和時間的網頁。打開pycham,新建一個django的工程,避免了命令行下的繁瑣命令,命名爲time_test,application name命名爲show_time。可以看到工程目錄如下圖所示:
二、視圖函數
# coding=utf-8
from django.http import HttpResponse
import datetime
def current_datetime(request):
# 計算當前日期和時間,並以 datetime.datetime 對象的形式保存爲局部變量 now
now = datetime.datetime.now()
#構建Html響應,使用now替換佔位符%s
html = "<html><body>It is now %s.</body></html>" % now
#返回一個包含所生成響應的HttpResponse對象
return HttpResponse(html)
每個視圖函數都以一個 HttpRequest 對象爲第一個參數,該參數通常命名爲 request 。
三、URL映射
from django.conf.urls import patterns, include, url
from show_time.views import current_datetime
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'time_test.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
(r'^time/$', current_datetime),
#url(r'^admin/', include(admin.site.urls)),
)
首先,我們從模塊中引入了 current_datetime 視圖。接着,我們加入了 (r'^time/$', current_datetime), 這一行。該行就是所謂的 URLpattern ,它是一個 Python 元組,其第一個元素是簡單的正則表達式,第二個元素是爲該模式應用的視圖函數。簡單來說,我們只是告訴 Django,所有指向 URL /time/ 的請求都應由 current_datetime 這個視圖函數來處理。
四、運行網頁
五、松耦合原則
六、動態URL
from django.conf.urls import patterns, include, url
from show_time.views import current_datetime, hours_ahead
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'time_test.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
(r'^time/$', current_datetime),
(r'^time/plus/(\d{1,2})/$', hours_ahead),
#url(r'^admin/', include(admin.site.urls)),
)
我們把它限制在最大允許99個小時, 這樣我們就只允許一個或兩個數字,正則表達式的語法就是 \d{1,2} 。現在我們已經設計了一個帶通配符的URL,我們需要一個方法把它傳遞到視圖函數裏去,這樣 我們只用一個視圖函數就可以處理所有的時間段了。我們使用圓括號把參數在URL模式裏標識 出來。在這個例子中,我們想要把這些數字作爲參數,用圓括號把 \d{1,2} 包圍起來。
# coding=utf-8
from django.http import HttpResponse
import datetime
def current_datetime(request):
# 計算當前日期和時間,並以 datetime.datetime 對象的形式保存爲局部變量 now
now = datetime.datetime.now()
#構建Html響應,使用now替換佔位符%s
html = "<html><body>It is now %s.</body></html>" % now
#返回一個包含所生成響應的HttpResponse對象
return HttpResponse(html)
def hours_ahead(request, offset):
offset = int(offset)
dt = datetime.datetime.now() + datetime.timedelta(hours=offset)
html = "<html><body>In %s hour(s), it will be %s.</body></html>" % (offset, dt)
return HttpResponse(html)
重新運行,在瀏覽器中輸入http://127.0.0.1:8000/time/plus/3/:
----------------------------------------------------------------
歡迎大家轉載我的文章。
轉載請註明:轉自古-月
歡迎繼續關注我的博客