溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

1Python全棧之路系列之Django初體驗

發(fā)布時間:2020-06-07 15:34:11 來源:網(wǎng)絡(luò) 閱讀:573 作者:Adlereden 欄目:建站服務(wù)器

Python全棧之路系列之Django初體驗


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


Django的歷史

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

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

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

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

摘錄自djangobook3

Django訪問流程

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

1Python全棧之路系列之Django初體驗

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

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

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

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

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

  5. 把頁面返回給瀏覽器,此時用戶就進(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版本,這個知識雖然不是django內(nèi)的,但還是要說一下

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

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

>>> import django

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

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

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

django為我們提供了一個django-admin的指令,以方便與我們在命令行下創(chuàng)建django項目,可以使用django-admin --help查看該指令的幫助信息,當(dāng)然如果你想這么做。

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

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

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

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

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

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

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

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

ansheng/urls.py項目的路由配置文件,這是一個django項目的主入口文件。

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

讓Django項目運行起來

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

如果你還沒啟動服務(wù)器,請切換到你的項目目錄里,運行下面的命令:

$ 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啟動一個本地服務(wù)器, 并且只能從你的這臺電腦連接和訪問。 既然服務(wù)器已經(jīng)運行起來了,現(xiàn)在用網(wǎng)頁瀏覽器訪問http://127.0.0.1:8000/。 你應(yīng)該可以看到一個令人賞心悅目的淡藍(lán)色Django歡迎頁面。

1Python全棧之路系列之Django初體驗

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

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

python manage.py runserver 8080

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

python manage.py runserver 0.0.0.0:8000

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

實例

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

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

繼上面創(chuàng)建好的項目ansheng之上我們在創(chuàng)建一個appusers:

$ python manage.py startapp users

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

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

因為需要用到html,所以我們也需要配置模板路徑文件了,先創(chuàng)建一個存放模板文件的路徑

$ 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),
    # 指定路由對應(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注冊到admin中
admin.site.register(UserInfo)

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

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

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

$ 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/登錄后臺,輸入我們剛才創(chuàng)建好的用戶和密碼

1Python全棧之路系列之Django初體驗

找到我們剛才添加的app,然后點擊ADD添加一個或多個用戶:

1Python全棧之路系列之Django初體驗

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

#Python全棧之路 #Django


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI