Django初探

jeanron100發表於2017-10-17

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

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

def hello(request):

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的很多知識。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-2146084/,如需轉載,請註明出處,否則將追究法律責任。