您好,登錄后才能下訂單哦!
Django
不得不說在Python中是一個非常強大的全棧框架,而且入門也比較簡單,只要你學完了基本的Django
知識,接著再做一兩個項目,不大不小就成,然后你再去學其它的框架你會發現,在那些小而美的框架中,你學起來將非常的快,因為你在學習Django
的時候就已經學習并且體驗過了Web開發流程,所以會有這么一個現象出現,有些新手朋友在學習Flask
、Tornado
等小而美的框架時,很多概念不是很理解,比如ORM
、路由
等,但你學Django
就不會出現這種問題。
Django
是從真實世界的應用中成長起來的,它是由堪薩斯(Kansas)州 Lawrence
城中的一個網絡開發小組
編寫的。 它誕生于2003 年秋天
,那時Lawrence Journal-World
報紙的程序員Adrian Holovaty
和Simon Willison
開始用Python
來編寫程序。
當時他們的World Online
小組制作并維護當地的幾個新聞站點, 并在以新聞界特有的快節奏開發環境中逐漸發展。這些站點包括有LJWorld.com
、Lawrence.com
和KUsports.com
, 記者(或管理層) 要求增加的特征或整個程序都能在計劃時間內快速的被建立,這些時間通常只有幾天或幾個小時。因此,Adrian
和Simon
開發了一種節省時間的網絡程序開發框架,這是在截止時間前能完成程序的唯一途徑。
2005年的夏天
,當這個框架開發完成時,它已經用來制作了很多個World Online
的站點。當時World Online
小組中的Jacob Kaplan-Moss
決定把這個框架發布為一個開源軟件。
從今往后數年,Django
是一個有著數以萬計的用戶和貢獻者,在世界廣泛傳播的完善開源項目。原來的World Online
的兩個開發者(Adrian and Jacob)
仍然掌握著Django
,但是其發展方向受社區團隊的影響更大。
摘錄自djangobook3
在學習Django之前讓我們先來了解下Django的訪問流程把,這是很重要的,便于你理解Django
整個的工作流程是怎樣的,當然我也把圖畫好了,如下圖所示:
解釋下上面的圖是如何工作的,先來擬這樣一個環境,你打開了QQ空間,但是在你沒有輸入QQ賬號和密碼的情況下是不可以直接訪問你的空間的,此時你需要輸入賬號密碼才可以進入,假設你賬號密碼輸出正確,自然而然的就進入了QQ空間,就以這個例子來描述上圖的流程把:
用戶打開了Google瀏覽器,輸入QQ空間的URL,但是當前沒有登錄,需要輸入賬號密碼,現在輸入賬號密碼了,然后點擊登錄;
點擊登錄的這個請求首先會進入Django的路由系統(在路由前面其實還有中間件),代表你要訪問哪一個資源,然后請求就被傳給了對應路由的函數;
這個時候函數接到了用戶傳過來的賬號密碼,去數據庫中(model,信號可以實現在數據庫之前之后做些操作)做匹配;
當前用戶名和密碼正確,然后視圖就會渲染頁面;
把頁面返回給瀏覽器,此時用戶就進入了自己的QQ空間
Django
本身是純Python
編寫的,所以安裝框架的第一步是確保你已經安裝了python2.x
或者python3.x
,你可以在https://www.python.org/downloads/
這下載并安裝python。
我這里已經安裝好了Python3.x
$ python3 -V Python 3.5.2
目前我的操作系統是Mac
并且已經配置安裝好了pip3
和python3
,我們可以直接使用pip
來進行安裝:
# 默認安裝最近穩定版本 pip3 install django
指定安裝django
版本,這個知識雖然不是django
內的,但還是要說一下
# 指定安裝1.9版本 pip install django==1.9
目前最新穩定的版本是1.10
,你可以進入Python
解釋器導入django
模塊來進行校驗是否正確安裝
>>> import django
如果在導入的時候沒有報錯就表示已經安裝成功,否則你可以需要重新安裝.
# 導入django >>> import django # 查看目前版本號 >>> django.get_version() '1.10.5'
django
為我們提供了一個django-admin
的指令,以方便與我們在命令行下創建django
項目,可以使用django-admin --help
查看該指令的幫助信息,當然如果你想這么做。
現在我們來看一下比較常用的一個參數把,這些參數都是通過django-admin --help
得到的。
參數 | 描述 |
---|---|
startproject | 創建一個完整的項目 |
startapp | 創建一個app |
runserver | 運行django為我們提供的http服務 |
shell | 進入待django環境的shell |
makemigrations | 生成數據庫命令 |
migrate | 執行生成好的數據庫命令 |
然后讓我們使用startproject
來創建一個項目吧
$ django-admin startproject ansheng $ cd ansheng/ $ ls ansheng manage.py
manage.py
文件是一種命令行工具,允許你以多種方式與該Django
項目進行交互,輸入python manage.py help
可以看到他為我們提供了那些指定,比如如下命令都是常用的:
指定 | 描述 |
---|---|
createsuperuser | 創建一個django后臺的超級管理員 |
changepassword | 修改超級管理員的密碼 |
貌似這兩個也是最常用的,還有一個參數和上面django-admin --help
是一樣的, 請自行比較測試。
ansheng/settings.py
該項目的全局配置文件,很重要。
ansheng/urls.py
項目的路由配置文件,這是一個django項目的主入口文件。
還有一些其他不重要的文件就不做闡述了。
django
內部是有一個內建的輕量的web開發服務器,在開發期間你完全可以使用內建的或者,從而免去了安裝配置nginx
或者apache
等。
如果你還沒啟動服務器,請切換到你的項目目錄里,運行下面的命令:
$ python manage.py runserver Performing system checks... System check identified no issues (0 silenced). You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. Run 'python manage.py migrate' to apply them. August 08, 2016 - 11:29:42 Django version 1.10, using settings 'mysite.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CTRL-BREAK.
這將會在端口8000
啟動一個本地服務器, 并且只能從你的這臺電腦連接和訪問。 既然服務器已經運行起來了,現在用網頁瀏覽器訪問http://127.0.0.1:8000/
。 你應該可以看到一個令人賞心悅目的淡藍色Django歡迎頁面。
更改這個Development Server
的主機地址或端口
默認情況下,runserver
命令在8000
端口啟動開發服務器,且僅監聽本地連接。 要想要更改服務器端口的話,可將端口作為命令行參數傳入:
python manage.py runserver 8080
通過指定一個IP
地址,你可以告訴服務器–允許非本地連接訪問。 如果你想和其他開發人員共享同一開發站點的話,該功能特別有用。0.0.0.0
這個IP
地址,告訴服務器去偵聽任意的網絡接口。
python manage.py runserver 0.0.0.0:8000
完成這些設置后,你本地網絡中的其它計算機就可以在瀏覽器中訪問你的IP
地址了。比如:http://192.168.1.103:8000/
這個例子中我們會涉及到django
的多方面知識,比如后面幾章會學習到的路由
、視圖
、模型
、模板
、后臺管理
等知識點。
那么這是個什么例子呢?其實是一個很簡單的例子,怎么個簡單法兒,后臺添加用戶,前臺展示用戶,很簡單吧,那我們接下來就來實操吧。
繼上面創建好的項目ansheng
之上我們在創建一個app
叫users
:
$ python manage.py startapp users
初次之外我們還需要把app
注冊到我們的項目中,可以在ansheng/settings.py
中找到INSTALLED_APPS
字典,把剛創建的APP名字添加進去:
INSTALLED_APPS = [ ...... 'users', ]
因為需要用到html
,所以我們也需要配置模板路徑文件了,先創建一個存放模板文件的路徑
$ mkdir templates
繼續編輯settings.py
,找到TEMPLATES
,把DIRS
修改如下:
'DIRS': [os.path.join(BASE_DIR, 'templates')],
在ansheng/urls.py
中添加一條路由配置:
from django.conf.urls import url from django.contrib import admin # 導入app下面的視圖函數users from users.views import users urlpatterns = [ url(r'^admin/', admin.site.urls), # 指定路由對應的函數 url(r'^users/$', users), ]
users/views.py
視圖函數內容如下:
from django.shortcuts import render # 導入模型中的UserInfo表 from .models import UserInfo # Create your views here. def users(request): # 獲取所有的用戶 all_user = UserInfo.objects.all() # 把用戶信息和前端文件一起發送到瀏覽器 return render(request, 'users.html', {'all_user': all_user})
template/users.html
內容如下
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <ul> <!-- 循環傳過來的所有用戶,顯示其用戶名 --> {% for user in all_user %} <li>{{ user.name }}</li> {% endfor %} </ul> </body> </html>
users/models.py
配置文件
from django.db import models __all__ = [ 'UserInfo' ] # Create your models here. class UserInfo(models.Model): name = models.CharField(max_length=30, verbose_name='用戶名') email = models.EmailField(verbose_name='用戶郵箱')
users/admin.py
配置文件
from django.contrib import admin from .models import * # Register your models here. # 把UserInfo注冊到admin中 admin.site.register(UserInfo)
最后我們生成數據庫:
$ python manage.py makemigrations $ python manage.py migrate
創建超級管理員用戶
$ python manage.py createsuperuser # 用戶名 Username (leave blank to use 'ansheng'): ansheng # 喲箱地址,可以為空 Email address: # 密碼 Password: # 確認密碼 Password (again): Superuser created successfully.
打開http://127.0.0.1:8000/admin/
登錄后臺,輸入我們剛才創建好的用戶和密碼
找到我們剛才添加的app
,然后點擊ADD
添加一個或多個用戶:
繼續打開http://127.0.0.1:8000/users/
就能夠看到剛才添加的用戶了,你可以試著再添加一個用戶然后刷新頁面,看看是否會顯示出來你剛剛新添加的用戶,完。
#Python全棧之路 #Django
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。