天天看點

Django初探

對于我來說,現在處于一個特殊的狀态,就是知道哪些東西是需要的,相對重要的,但是我也很清楚的知道,這些東西是我目前不擅長的。是以為了能夠落實自己的想法,同時逼迫自己學習一些原本陌生的東西,其實是一件很有意思的事情,前提是不能把自己逼得太緊,否則除了壓力就是各種纰漏。

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,啟動後的歡迎界面是下面這樣的。

Django初探

較低的版本,稍微簡單一些,其實對于我們的絕大多數應用來說,Python2.7還是使用範圍較廣,那麼與之比對的Django的版本也就保持在一個限定的版本範圍内。

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),

]

Django初探

也可以用在這個基礎上做到資料與視圖分離。資料是在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!

Django初探

如果要實作更為複雜的,就需要學習一下标簽的内容,流程流轉。整體而言和JSP的内容很相似,還需要結合html的很多知識。