今天沒有跟老師的節奏碼代碼,因爲我肯定跟不上。我喜歡邊碼代碼一邊理解邏輯和其中涉及的各方面知識,所以特別容易跑偏和掉隊。今天純聽講終於跟上了,而且還聽得挺有滋味的,算是聽懂了吧。晚自習多敲敲代碼,加深理解。今天終於搞明白了mvc和mvt,mvc是優秀的web框架遵循的標準模式,而Django有自己的獨特模式即mvt,仍然遵循mvc只不過c是由框架本身處理,多的T是指templates即模型。
首先,啓動虛擬環境:
在虛擬環境下創建新項目:
於是就生成了以下文件夾和文件:
setting文件裏面已經自帶了很多Django的命令啊類型方法啊,先不管它,來修改settings的時區:
確認Django開發服務器是否運行:
在主項目目錄下新建view.py文件並輸入代碼:
from django.http import Http404, HttpResponse
import datetime
def hello(request):
return HttpResponse('Hello, world!')
def current_datetime(request):
now = datetime.datetime.now()
html = 'It is now %s.' % now
return HttpResponse(html)
def hours_ahead(request, offset):
try:
offset = int(offset)
except ValueError:
raise Http404()
dt = datetime.datetime.now() + datetime.timedelta(hours=offset)
html = 'In %s hour(s), it will be %s.' % (offset, dt)
return HttpResponse(html)
導入模塊Http404\HttpResponse、datetime,創建名爲hello的視圖函數,傳參名爲request,返回HttpResponse實例化的一句話‘helloworld’;然後才能創建方便計算日期的函數,跟hello一樣,返回叫做html字符串的 HttpResponse 實例化對象;第三個函數是一個嘗試計算偏移時間的方法,抄的教程,試試效果。
接着要修改url文件之後,才能把視圖的內容顯示在網頁上,Django才知道哪個url要調用view視圖文件
from django.conf.urls import url, include
from django.contrib import admin
from newsite.views import hello, current_datetime, hours_ahead
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^hello/$', hello),
url(r'^time/$', current_datetime),
url(r'^time/plus/(\d{1,2})/$', hours_ahead),
]
對 url 配置做了三處改動。其一,在頂部導入了hello、current_datetime 函數;其二,添加兩個 URL 模式,把 hello和time/ url 映射到那個新視圖上。這就是接口,就是API呀!同時,這就叫做鬆耦合!這些url的組件可以隨時改動,影響很小甚至沒有影響到視圖view文件,url與視圖view這種情況就叫做鬆耦合。呼呼,終於形象的搞懂了!其三,增加了第三個url即time/plus
好了,我真正意義上的第一個Django實例可以開始運行了:
(venv) D:\wordspace\newsite>python manage.py runserver # 啓動Django的服務器
第一個url:hello的效果:
第二個url:time的效果
第三個url:time/plus/3的效果:
第三個url:time/plus/24的效果:
第三個url:time/plus/110的效果:
可以看出,第三個url就是做了一個時間方面的運算,最後超過設定值就拋出系統錯誤。這個例子還順便把正則表達式和python相關的基礎知識複習了一遍。
好了,總算是親手把Django第一個案例做完了。其實今天還學習了的Django後續更多的知識,比如通過Django框架,API到MySQL的增刪改查、API到HTML的相關設置,如何建立一個簡單CRM客戶關係管理系統,從web頁面輸入用戶數據自動記錄到數據庫,又如何通過Django的接口,把數據庫的數據通過不同的元素進行查找。還學習了一對一、一對多、多對多。知識點太多了,明天再好好的親手做案例把這些整理清楚。