您好,登錄后才能下訂單哦!
Django是一個(gè)高效的web開發(fā)框架,使用Django可以用最小的代價(jià)構(gòu)建和維護(hù)高質(zhì)量的web應(yīng)用。通過減少重復(fù)的代碼,讓人能夠?qū)W⒂趙eb應(yīng)用上有趣的關(guān)鍵性的東西。
遵循了模型-視圖-控制器(MVC)的設(shè)計(jì)模式。簡單來說,MVC是一種軟件開發(fā)的方法,它把定義和訪問 數(shù)據(jù)的代碼(模型 model)、控制請(qǐng)求邏輯的代碼(控制器 controller)和用戶接口(視圖 view)分割開來。我們會(huì)在以后更加深入地討論MVC。
這個(gè)方法最重要的優(yōu)點(diǎn)在于它的各個(gè)部分都是 松耦合 (loosely coupled)的。這樣用Django開發(fā)的Web程序中每個(gè)部分都有它自己單一的目的,并且可以單獨(dú)地被修改而不會(huì)影響到其他部分。比方說,一個(gè)程序員可以在不影響底層實(shí)現(xiàn)的情況下修改URL;設(shè)計(jì)師可以不需要接觸Python的代碼就修改頁面的HTML;數(shù)據(jù)庫管理員在重命名數(shù)據(jù)表之后只需要修改一個(gè)地方就可以了,而不需要在一大堆文件中查找替換。
一. Django基本環(huán)境的搭建
因?yàn)楣P者為自己定下的發(fā)展方向是運(yùn)維開發(fā),因此所有的開發(fā)工作都會(huì)是在linux平臺(tái)上進(jìn)行,后續(xù)的環(huán)境搭建也基本上都是在linux系統(tǒng)中,筆者使用的系統(tǒng)是RHEL7.2。通過pyenv來管理不同的虛擬環(huán)境,在不同的虛擬環(huán)境中可以使用不同的python版本,為后續(xù)的項(xiàng)目開發(fā)提供便利。
1. 安裝pip
yum install python-pip
2. 安裝pyenv
安裝pyenv的過程比較長,請(qǐng)見上一篇python開發(fā)環(huán)境準(zhǔn)備文章。
3. 使用pyenv創(chuàng)建一個(gè)虛擬環(huán)境,然后切換到虛擬環(huán)境
pyenv virtualenv 3.5.2 myproject pyenv local myproject
4. 在虛擬環(huán)境中使用pip來安裝django
(myproject) # pip install django
5. 查看django是否安裝成功
# python -m django --version
可以看到下面的畫面,說明django安裝成功,這里安裝的django版本是1.9.8,是最新版本。
二、Django的基本命令
首先我自己創(chuàng)建一個(gè)Django的目錄myproject,然后在這里目錄里存放我自己的Django工程
# mkdir myproject
1. 創(chuàng)建一個(gè)工程
# django-admin.py startproject project-name # django-admin.py startproject mywebsite #我想創(chuàng)建一個(gè)自己的博客網(wǎng)站,項(xiàng)目叫mywebsite
2. 在工程里創(chuàng)建一個(gè)APP
# cd mywebsite #進(jìn)入到mywebsite工程目錄 # project manage.py startapp app-name #這是創(chuàng)建網(wǎng)站APP的默認(rèn)命令
#相當(dāng)于創(chuàng)建工程底下的子項(xiàng)目
# 網(wǎng)站的第一個(gè)版本,叫做myweb # python manage.py startapp myweb
3. 同步數(shù)據(jù)庫
# python manage.py makemigrations #同步數(shù)據(jù)庫 # python manage.py migrate #創(chuàng)建數(shù)據(jù)庫 # python manage.py flush #清空數(shù)據(jù)庫,留下空表(使用時(shí)要注意) # python manage.py dbshell #進(jìn)入數(shù)據(jù)庫命令行,如果是mysql或postresql會(huì)要用戶名密碼
我們剛開始創(chuàng)建網(wǎng)站,只需要先創(chuàng)建一個(gè)基礎(chǔ)的數(shù)據(jù)庫即可,其余的命令只需要記住就好。
$python manage.py migrate
4. 啟動(dòng)自己的網(wǎng)站,使用Django初始頁面
# 命令說明
# python manage.py runserver #默認(rèn)啟動(dòng)方式,監(jiān)聽在127.0.0.1:8000端口上 # python manage.py runserver ip:port #監(jiān)聽在其他IP上 # 執(zhí)行命令 # python manage.py runserver 127.0.0.1:8000
然后打開瀏覽器,打開http://127.0.0.1:8000頁面,如果看到下面的頁面說明你的第一步已經(jīng)成功了。
5. 更多命令
輸入python manage.py 命令可以查看詳細(xì)的命令列表,不記得相關(guān)命令時(shí)可以這樣查詢。
三、Django框架簡單介紹
創(chuàng)建好了Django工程mywebsite和下屬的子項(xiàng)目myweb后,工程的文件目錄結(jié)構(gòu)如下:
# tree mywebsite mywebsite/ ├── manage.py └── mywebsite ├── __init__.py ├── settings.py ├── urls.py └── wsgi.py
manag.py 文件是工程項(xiàng)目所有管理命令的入口,可以使用python manage.py查看所有的命令
mywebsite目錄下是工程的所有文件
__init__.py 工程的初始化文件
settings.py Django的設(shè)置文件,如DEBBUG的開關(guān),靜態(tài)文件的位置等
urls.py 網(wǎng)址的入口,關(guān)聯(lián)對(duì)應(yīng)到views.py中的一個(gè)函數(shù)(或者generic類),訪問一個(gè)網(wǎng)址就對(duì)應(yīng)一個(gè)函數(shù)
wsgi.py 部署服務(wù)器時(shí)使用到的文件
子項(xiàng)目myweb的目錄結(jié)構(gòu)如下:
#tree myweb myweb ├── admin.py ├── apps.py ├── __init__.py ├── migrations │ └── __init__.py ├── models.py ├── tests.py └── views.py
admin.py 與后臺(tái)登錄有關(guān)的文件
apps.py myweb屬性相關(guān)的文件
mirgrations 數(shù)據(jù)庫目錄
models.py 數(shù)據(jù)庫操作相關(guān)的文件
tests.py 項(xiàng)目測試有關(guān)的文件
views.py 網(wǎng)址函數(shù),和工程目錄中的urls.py相對(duì)應(yīng)
四 、啟動(dòng)Django默認(rèn)界面
1. 將新定義的myweb添加到settings.py中的INSTALL_APPS中
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'myweb', #新加的內(nèi)容 ]
還要將需要監(jiān)聽的網(wǎng)卡外網(wǎng)地址加入到settings.py中的可信賴的地址列表ALLOWED_HOSTS 中(Django1.10新增內(nèi)容):
ALLOWED_HOSTS = [ '192.168.1.246', ]
2. 在myweb里的views.py文件中定義視圖函數(shù)(訪問頁面時(shí)的內(nèi)容)
#vim myweb/views.py
#下面是添加到views.py文件里的內(nèi)容
#coding:utf-8 from django.http import HttpResponse def index(request): return HttpResponse("歡迎光臨小灰灰的第一個(gè)小站")
第一行聲明utf-8編碼,因?yàn)橄旅媸褂玫搅酥形?,不使用utf-8會(huì)報(bào)錯(cuò)。
第二行插入了一個(gè)HttpResponse類,這個(gè)類是用來向網(wǎng)頁返回內(nèi)容,把內(nèi)容顯示在網(wǎng)頁上面
第三行定義了一個(gè)函數(shù)index(request),第一個(gè)參數(shù)是request,和網(wǎng)頁發(fā)來的請(qǐng)求有關(guān),request變量里包含了get或post的內(nèi)容,用戶的瀏覽器和系統(tǒng)等信息包含在里面。函數(shù)返回一個(gè)HttpResponse對(duì)象,這個(gè)對(duì)象將包含的值顯示在往上面
3. 添加視圖函數(shù)對(duì)應(yīng)的網(wǎng)址,就在上面第三部分我們提到的urls.py文件里。
# vim mywebsite/urls.py
from django.conf.urls import url from django.contrib import admin from myweb import views as mywb_views #新添加的內(nèi)容,從myweb項(xiàng)目里插入views模塊 urlpatterns = [ url(r'^$',myweb_views.index), #網(wǎng)址對(duì)應(yīng)到views模塊里定義的index函數(shù) url(r'^admin/', admin.site.urls), ]
內(nèi)容修改后保存
4. 啟動(dòng)我們的第一個(gè)Django項(xiàng)目,因?yàn)槭窃谔摂M機(jī)上操作的,所以需要監(jiān)聽在外部網(wǎng)卡IP上
# python manage.py runserver 0.0.0.0:8000
然后在其他機(jī)器上打開瀏覽器, 輸入虛擬機(jī)的IP和端口http://192.168.1.246:8000 ,就可以看到如下的頁面,說明我們的第一個(gè)web站點(diǎn)創(chuàng)建成功。
這一章節(jié)的知識(shí)點(diǎn):
1. pip的國內(nèi)源配置
2. 虛擬開發(fā)環(huán)境的配置
3. Django的基本命令,包括項(xiàng)目、APP的創(chuàng)建,數(shù)據(jù)的創(chuàng)建和更新。
django-admin.py startproject project-name
project manage.py startapp app-name
python manage.py makemigrations #同步數(shù)據(jù)庫
python manage.py migrate #創(chuàng)建數(shù)據(jù)庫
python manage.py flush #清空數(shù)據(jù)庫,留下空表(使用時(shí)要注意)
python manage.py dbshell #進(jìn)入數(shù)據(jù)庫命令行,如果是mysql或postresql會(huì)要用戶名密碼
python manage.py runserver #默認(rèn)啟動(dòng)方式,監(jiān)聽在127.0.0.1:8000端口上
python manage.py runserver ip:port #監(jiān)聽在其他IP上
4. Django項(xiàng)目的基本架構(gòu),views.py、setting.py、urls.py、admin.py這幾個(gè)文件的含義和聯(lián)系
views.py 定義url響應(yīng)函數(shù),與urls.py配合使用。
settings.py 定義一些基本的配置參數(shù)
urls.py 定義對(duì)應(yīng)的url規(guī)則
admin.py 對(duì)應(yīng)管理后臺(tái)
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。