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,啟動後的歡迎介面是下面這樣的。
較低的版本,稍微簡單一些,其實對於我們的絕大多數應用來說,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
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!
如果要實現更為複雜的,就需要學習一下標籤的內容,流程流轉。整體而言和JSP的內容很相似,還需要結合html的很多知識。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-2146084/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Puppeteer 初探
- gRPC 初探RPC
- ## RATreeView 初探View
- 初探Firewalld
- Serverless初探Server
- Mobx 初探
- 初探PWA
- 初探TCPTCP
- 初探 BaconJSJS
- 初探 TypeScriptTypeScript
- ECharts 初探Echarts
- Quantum 初探
- 初探 XSS
- 初探canvasCanvas
- puppeteer初探
- Promise初探Promise
- websoctet初探Web
- 初探 Recompose
- jsbridge初探JS
- Nginx 初探Nginx
- Deno 初探
- ELK初探
- Quartz初探quartz
- 初探IndexedDBIndex
- jQuery初探jQuery
- Docker初探Docker
- Redis初探Redis
- angr初探
- Vue初探Vue
- Gitee初探Gitee
- MapDB初探
- Django(2) - Django模板Django
- Django(33)Django操作cookieDjangoCookie
- CSS Modules 初探CSS
- MySQL 索引初探MySql索引
- Vuforia - AR初探
- Flutter初探分析Flutter
- Web Worker 初探Web
- Spring Boot 初探Spring Boot