1Python全棧之路系列之Django初體驗(yàn)-創(chuàng)新互聯(lián)

Python全棧之路系列之Django初體驗(yàn)


站在用戶的角度思考問題,與客戶深入溝通,找到平遠(yuǎn)網(wǎng)站設(shè)計(jì)與平遠(yuǎn)網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名與空間、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋平遠(yuǎn)地區(qū)。

Django不得不說在Python中是一個(gè)非常強(qiáng)大的全??蚣?,而且入門也比較簡單,只要你學(xué)完了基本的Django知識(shí),接著再做一兩個(gè)項(xiàng)目,不大不小就成,然后你再去學(xué)其它的框架你會(huì)發(fā)現(xiàn),在那些小而美的框架中,你學(xué)起來將非常的快,因?yàn)槟阍趯W(xué)習(xí)Django的時(shí)候就已經(jīng)學(xué)習(xí)并且體驗(yàn)過了Web開發(fā)流程,所以會(huì)有這么一個(gè)現(xiàn)象出現(xiàn),有些新手朋友在學(xué)習(xí)Flask、Tornado等小而美的框架時(shí),很多概念不是很理解,比如ORM、路由等,但你學(xué)Django就不會(huì)出現(xiàn)這種問題。


Django的歷史

Django是從真實(shí)世界的應(yīng)用中成長起來的,它是由堪薩斯(Kansas)州 Lawrence城中的一個(gè)網(wǎng)絡(luò)開發(fā)小組編寫的。 它誕生于2003 年秋天,那時(shí)Lawrence Journal-World報(bào)紙的程序員Adrian HolovatySimon Willison開始用Python來編寫程序。

當(dāng)時(shí)他們的World Online小組制作并維護(hù)當(dāng)?shù)氐膸讉€(gè)新聞?wù)军c(diǎn), 并在以新聞界特有的快節(jié)奏開發(fā)環(huán)境中逐漸發(fā)展。這些站點(diǎn)包括有LJWorld.com、Lawrence.comKUsports.com, 記者(或管理層) 要求增加的特征或整個(gè)程序都能在計(jì)劃時(shí)間內(nèi)快速的被建立,這些時(shí)間通常只有幾天或幾個(gè)小時(shí)。因此,AdrianSimon 開發(fā)了一種節(jié)省時(shí)間的網(wǎng)絡(luò)程序開發(fā)框架,這是在截止時(shí)間前能完成程序的唯一途徑。

2005年的夏天,當(dāng)這個(gè)框架開發(fā)完成時(shí),它已經(jīng)用來制作了很多個(gè)World Online的站點(diǎn)。當(dāng)時(shí)World Online小組中的Jacob Kaplan-Moss 決定把這個(gè)框架發(fā)布為一個(gè)開源軟件。

從今往后數(shù)年,Django是一個(gè)有著數(shù)以萬計(jì)的用戶和貢獻(xiàn)者,在世界廣泛傳播的完善開源項(xiàng)目。原來的World Online的兩個(gè)開發(fā)者(Adrian and Jacob)仍然掌握著Django,但是其發(fā)展方向受社區(qū)團(tuán)隊(duì)的影響更大。

摘錄自djangobook3

Django訪問流程

在學(xué)習(xí)Django之前讓我們先來了解下Django的訪問流程把,這是很重要的,便于你理解Django整個(gè)的工作流程是怎樣的,當(dāng)然我也把圖畫好了,如下圖所示:

1Python全棧之路系列之Django初體驗(yàn)

解釋下上面的圖是如何工作的,先來擬這樣一個(gè)環(huán)境,你打開了QQ空間,但是在你沒有輸入QQ賬號(hào)和密碼的情況下是不可以直接訪問你的空間的,此時(shí)你需要輸入賬號(hào)密碼才可以進(jìn)入,假設(shè)你賬號(hào)密碼輸出正確,自然而然的就進(jìn)入了QQ空間,就以這個(gè)例子來描述上圖的流程把:

  1. 用戶打開了Google瀏覽器,輸入QQ空間的URL,但是當(dāng)前沒有登錄,需要輸入賬號(hào)密碼,現(xiàn)在輸入賬號(hào)密碼了,然后點(diǎn)擊登錄;

  2. 點(diǎn)擊登錄的這個(gè)請(qǐng)求首先會(huì)進(jìn)入Django的路由系統(tǒng)(在路由前面其實(shí)還有中間件),代表你要訪問哪一個(gè)資源,然后請(qǐng)求就被傳給了對(duì)應(yīng)路由的函數(shù);

  3. 這個(gè)時(shí)候函數(shù)接到了用戶傳過來的賬號(hào)密碼,去數(shù)據(jù)庫中(model,信號(hào)可以實(shí)現(xiàn)在數(shù)據(jù)庫之前之后做些操作)做匹配;

  4. 當(dāng)前用戶名和密碼正確,然后視圖就會(huì)渲染頁面;

  5. 把頁面返回給瀏覽器,此時(shí)用戶就進(jìn)入了自己的QQ空間

安裝Python

Django本身是純Python編寫的,所以安裝框架的第一步是確保你已經(jīng)安裝了python2.x或者python3.x,你可以在https://www.python.org/downloads/這下載并安裝python。

我這里已經(jīng)安裝好了Python3.x

$ python3 -V Python 3.5.2

安裝

目前我的操作系統(tǒng)是Mac并且已經(jīng)配置安裝好了pip3python3,我們可以直接使用pip來進(jìn)行安裝:

# 默認(rèn)安裝最近穩(wěn)定版本 pip3 install django

指定安裝django版本,這個(gè)知識(shí)雖然不是django內(nèi)的,但還是要說一下

# 指定安裝1.9版本 pip install django==1.9

目前最新穩(wěn)定的版本是1.10,你可以進(jìn)入Python解釋器導(dǎo)入django模塊來進(jìn)行校驗(yàn)是否正確安裝

>>> import django

如果在導(dǎo)入的時(shí)候沒有報(bào)錯(cuò)就表示已經(jīng)安裝成功,否則你可以需要重新安裝.

# 導(dǎo)入django >>> import django # 查看目前版本號(hào) >>> django.get_version() '1.10.5'

創(chuàng)建一個(gè)Django項(xiàng)目

django為我們提供了一個(gè)django-admin的指令,以方便與我們?cè)诿钚邢聞?chuàng)建django項(xiàng)目,可以使用django-admin --help查看該指令的幫助信息,當(dāng)然如果你想這么做。

現(xiàn)在我們來看一下比較常用的一個(gè)參數(shù)把,這些參數(shù)都是通過django-admin --help得到的。

參數(shù)描述
startproject創(chuàng)建一個(gè)完整的項(xiàng)目
startapp創(chuàng)建一個(gè)app
runserver運(yùn)行django為我們提供的http服務(wù)
shell進(jìn)入待django環(huán)境的shell
makemigrations生成數(shù)據(jù)庫命令
migrate執(zhí)行生成好的數(shù)據(jù)庫命令

然后讓我們使用startproject來創(chuàng)建一個(gè)項(xiàng)目吧

$ django-admin startproject ansheng $ cd ansheng/ $ ls ansheng        manage.py

manage.py文件是一種命令行工具,允許你以多種方式與該Django項(xiàng)目進(jìn)行交互,輸入python manage.py help可以看到他為我們提供了那些指定,比如如下命令都是常用的:

指定描述
createsuperuser創(chuàng)建一個(gè)django后臺(tái)的超級(jí)管理員
changepassword修改超級(jí)管理員的密碼

貌似這兩個(gè)也是最常用的,還有一個(gè)參數(shù)和上面django-admin --help是一樣的, 請(qǐng)自行比較測(cè)試。

ansheng/settings.py該項(xiàng)目的全局配置文件,很重要。

ansheng/urls.py項(xiàng)目的路由配置文件,這是一個(gè)django項(xiàng)目的主入口文件。

還有一些其他不重要的文件就不做闡述了。

讓Django項(xiàng)目運(yùn)行起來

django內(nèi)部是有一個(gè)內(nèi)建的輕量的web開發(fā)服務(wù)器,在開發(fā)期間你完全可以使用內(nèi)建的或者,從而免去了安裝配置nginx或者apache等。

如果你還沒啟動(dòng)服務(wù)器,請(qǐng)切換到你的項(xiàng)目目錄里,運(yùn)行下面的命令:

$ 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.

這將會(huì)在端口8000啟動(dòng)一個(gè)本地服務(wù)器, 并且只能從你的這臺(tái)電腦連接和訪問。 既然服務(wù)器已經(jīng)運(yùn)行起來了,現(xiàn)在用網(wǎng)頁瀏覽器訪問http://127.0.0.1:8000/。 你應(yīng)該可以看到一個(gè)令人賞心悅目的淡藍(lán)色Django歡迎頁面。

1Python全棧之路系列之Django初體驗(yàn)

更改這個(gè)Development Server的主機(jī)地址或端口

默認(rèn)情況下,runserver命令在8000端口啟動(dòng)開發(fā)服務(wù)器,且僅監(jiān)聽本地連接。 要想要更改服務(wù)器端口的話,可將端口作為命令行參數(shù)傳入:

python manage.py runserver 8080

通過指定一個(gè)IP地址,你可以告訴服務(wù)器–允許非本地連接訪問。 如果你想和其他開發(fā)人員共享同一開發(fā)站點(diǎn)的話,該功能特別有用。0.0.0.0這個(gè)IP地址,告訴服務(wù)器去偵聽任意的網(wǎng)絡(luò)接口。

python manage.py runserver 0.0.0.0:8000

完成這些設(shè)置后,你本地網(wǎng)絡(luò)中的其它計(jì)算機(jī)就可以在瀏覽器中訪問你的IP地址了。比如:http://192.168.1.103:8000/

實(shí)例

這個(gè)例子中我們會(huì)涉及到django的多方面知識(shí),比如后面幾章會(huì)學(xué)習(xí)到的路由、視圖模型、模板、后臺(tái)管理等知識(shí)點(diǎn)。

那么這是個(gè)什么例子呢?其實(shí)是一個(gè)很簡單的例子,怎么個(gè)簡單法兒,后臺(tái)添加用戶,前臺(tái)展示用戶,很簡單吧,那我們接下來就來實(shí)操吧。

繼上面創(chuàng)建好的項(xiàng)目ansheng之上我們?cè)趧?chuàng)建一個(gè)appusers:

$ python manage.py startapp users

初次之外我們還需要把app注冊(cè)到我們的項(xiàng)目中,可以在ansheng/settings.py中找到INSTALLED_APPS字典,把剛創(chuàng)建的APP名字添加進(jìn)去:

INSTALLED_APPS = [     ......     'users', ]

因?yàn)樾枰玫?code>html,所以我們也需要配置模板路徑文件了,先創(chuàng)建一個(gè)存放模板文件的路徑

$ mkdir templates

繼續(xù)編輯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 # 導(dǎo)入app下面的視圖函數(shù)users from users.views import users urlpatterns = [     url(r'^admin/', admin.site.urls),     # 指定路由對(duì)應(yīng)的函數(shù)     url(r'^users/$', users), ]

users/views.py視圖函數(shù)內(nèi)容如下:

from django.shortcuts import render # 導(dǎo)入模型中的UserInfo表 from .models import UserInfo # Create your views here. def users(request):     # 獲取所有的用戶     all_user = UserInfo.objects.all()     # 把用戶信息和前端文件一起發(fā)送到瀏覽器     return render(request, 'users.html', {'all_user': all_user})

template/users.html內(nèi)容如下

<!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>     <!-- 循環(huán)傳過來的所有用戶,顯示其用戶名 -->     {% 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注冊(cè)到admin中 admin.site.register(UserInfo)

最后我們生成數(shù)據(jù)庫:

$ python manage.py makemigrations $ python manage.py migrate

創(chuàng)建超級(jí)管理員用戶

$ python manage.py createsuperuser # 用戶名 Username (leave blank to use 'ansheng'): ansheng # 喲箱地址,可以為空 Email address:  # 密碼 Password:  # 確認(rèn)密碼 Password (again):  Superuser created successfully.

打開http://127.0.0.1:8000/admin/登錄后臺(tái),輸入我們剛才創(chuàng)建好的用戶和密碼

1Python全棧之路系列之Django初體驗(yàn)

找到我們剛才添加的app,然后點(diǎn)擊ADD添加一個(gè)或多個(gè)用戶:

1Python全棧之路系列之Django初體驗(yàn)

繼續(xù)打開http://127.0.0.1:8000/users/就能夠看到剛才添加的用戶了,你可以試著再添加一個(gè)用戶然后刷新頁面,看看是否會(huì)顯示出來你剛剛新添加的用戶,完。

#Python全棧之路 #Django

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)頁題目:1Python全棧之路系列之Django初體驗(yàn)-創(chuàng)新互聯(lián)
當(dāng)前地址:http://bm7419.com/article46/gjieg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、營銷型網(wǎng)站建設(shè)網(wǎng)站收錄、企業(yè)建站、面包屑導(dǎo)航網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)