對于我來說,現在處于一個特殊的狀态,就是知道哪些東西是需要的,相對重要的,但是我也很清楚的知道,這些東西是我目前不擅長的。是以為了能夠落實自己的想法,同時逼迫自己學習一些原本陌生的東西,其實是一件很有意思的事情,前提是不能把自己逼得太緊,否則除了壓力就是各種纰漏。
Python這些年火得厲害,web架構也是應運而生。Django算是其中比較典型的一個web架構,
Django遵守BSD版權,初次釋出于2005年7月, 并于2008年9月釋出了第一個正式版本1.0
,這個時間點上,國内的Java正是如火如荼的時候,web架構層出不窮,Python相對來說還算小衆。沒想到風水輪流轉,沒過多少年,就趕上了大資料的快車,資料分析裡有Python的身影,devops近年來很火,自動化平台還是清一色的python架構,基本還是Django,是以說到Django,很多人并不陌生。
我花時間簡單學習了下,發現和我的預期相符。原因在後面再解釋下。
因為Python的跨平台,在windows下,linux都是相容的,是以為了友善,我就直接在windows上做了測試。說幾個坑。
一個是下載下傳了安裝包之後,Python版本是2.7的,如果是Linux自帶的版本是2.6還是低了些。Python有兩個大版本,2.7還有3.0的,雖然說是高低版本,但是竟然有很大的差别。是以在Django的版本上也會有一定的相容落差。
比如我下載下傳了Python2.7最新版本,Django相對較新的版本2.1,結果在安裝Django的時候,就抛出了錯誤。
D:django-masterdjango-master>python setup.py install
Traceback (most recent call last):
File "setup.py", line 5, in <module>
...
File "D:programspython2.7Libsocket.py", line 47, in <module>
import _socket
ImportError: DLL load failed: 找不到指定的子產品。
這個問題我看了很多資料,最後才反應過來,應該是版本的不相容性。
是以我果斷又下載下傳了Python 3.6版本,然後再次嘗試就沒問題了。
是以一個基本的相容清單圖如下,可以避免走很多的彎路。
Django 版本
Python 版本
1.8
2.7, 3.2 , 3.3, 3.4, 3.5
1.9, 1.10
2.7, 3.4, 3.5
1.11
2.7, 3.4, 3.5, 3.6
2.0
3.5+
安裝Django就是在下載下傳的安裝目錄下,直接調用python setup.py install即可。
驗證Django是否安裝成功,也可以在python中引入這個庫來測試是否正常。
>>> import django
>>> django.get_version()
'2.1'
>>>
如果要建立一個項目,比如說testdj,可以使用統一的指令行django-admin來實作。
django-admin startproject testdj
如果需要啟動服務,則是在項目目錄下使用python來調用目錄下的manage.py檔案。
當然如果是作為測試環境,這麼做沒什麼問題,如果是線上環境使用,就需要使用更專業的方式,比如使用伺服器為nginx
如果是2.0版本以上的Django,啟動後的歡迎界面是下面這樣的。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZlBnauMzYwI2NwUTZwUDM1UWNjBjN1MmZldjZkNDN3kzYmZmNfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.jpeg)
較低的版本,稍微簡單一些,其實對于我們的絕大多數應用來說,Python2.7還是使用範圍較廣,那麼與之比對的Django的版本也就保持在一個限定的版本範圍内。
當然這個是一個完全空白的模闆,什麼内容都沒有,我們可以來一個helloworld
在項目目錄下,建立一個Python檔案view.py,使用的是HttpResponse來傳回資料。
from django.http import HttpResponse
def hello(request):
return HttpResponse("Hello world ! jeanron100 ")
而頁面資訊的扭轉,則是使用urls.py完成。
from django.conf.urls import url
from . import view
urlpatterns = [
url(r'^$', view.hello),
]
也可以用在這個基礎上做到資料與視圖分離。資料是在html檔案中,視圖則是在view.py裡面修改,兩者的映射是通過模闆檔案來銜接的。
比如資料檔案hello.html的内容如下,就是一個變量來代替。
<h1>{{ hello }}</h1>
而視圖的資訊修改view.py,内容如下,原本的HttpResponse就修改為了render.
from django.shortcuts import render
context = {}
context['hello'] = 'Hello World!'
return render(request, 'hello.html', context)
這個hello.html檔案如何映射,是通過一個指定的目錄來銜接的,比如指定目錄為templates,hello.html就放置在這個目錄下。
需要修改原本的settings.py檔案,把目錄的部分修改一下,指定到templates目錄。
TEMPLATES= [{ 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [BASE_DIR+"/templates",],# 修改位置
。。。。
修改後的值也是根據映射關系,比如hello這個變量它的值就位hello World!
如果要實作更為複雜的,就需要學習一下标簽的内容,流程流轉。整體而言和JSP的内容很相似,還需要結合html的很多知識。