国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁(yè) > 營(yíng)銷資訊 > 網(wǎng)站運(yùn)營(yíng) > Django快速入門 (1) -- 學(xué)會(huì)搭建web站點(diǎn)及業(yè)務(wù)框架

Django快速入門 (1) -- 學(xué)會(huì)搭建web站點(diǎn)及業(yè)務(wù)框架

時(shí)間:2023-07-14 00:27:02 | 來(lái)源:網(wǎng)站運(yùn)營(yíng)

時(shí)間:2023-07-14 00:27:02 來(lái)源:網(wǎng)站運(yùn)營(yíng)

Django快速入門 (1) -- 學(xué)會(huì)搭建web站點(diǎn)及業(yè)務(wù)框架:在web框架方面,python提供的選擇主要包括django,flask,fastapi,torndo等方案。我們看到所有介紹基于python的web框架中django都排在第一位,說(shuō)明該框架在pythoner心中的地位。雖然前面我介紹過(guò)flask框架,幾乎主要一天就可以快速上手搭建出來(lái)web站點(diǎn),因?yàn)樗禽p量級(jí)的,沒有太多負(fù)擔(dān),但很明顯對(duì)于web站點(diǎn)而已,除了前端提供顯示外,還需要一個(gè)強(qiáng)大的后臺(tái)管理模塊。顯然flask無(wú)法提供,如果使用flask,我們還需要自行搭建后端管理模塊,突然多出了很多工作。不過(guò)也不用過(guò)于擔(dān)心,畢竟大部分的web開發(fā)都是需要前后端分開搭建。那django為啥能排第一呢?其中一個(gè)很重要的原因就是django在安裝之后自動(dòng)幫著搭建了一個(gè)后臺(tái)管理入口,而且相應(yīng)的各種增刪改差等都封裝內(nèi)置了。當(dāng)然Django還有許多其他說(shuō)不完的優(yōu)點(diǎn),如果你喜歡并習(xí)慣使用它的話。

有關(guān)Django的教程網(wǎng)絡(luò)資源有很多,我想你如果是完全新手,學(xué)習(xí)Django的路線還是有點(diǎn)陡峭的,不如先看看輕量級(jí)的Flask,有興趣可以去看我寫的入門實(shí)踐文章:

學(xué)習(xí)Django需要的基礎(chǔ)包括:(1)基礎(chǔ)的python應(yīng)用和HTML技術(shù);(2)MVC(模型、視圖、控制器)概念,三個(gè)部件各負(fù)其責(zé),但又互相依賴;(3)數(shù)據(jù)庫(kù)基礎(chǔ)技術(shù),django提供了后端管理,就涉及到許多數(shù)據(jù)庫(kù)相關(guān)基礎(chǔ)技術(shù);(4)一些基礎(chǔ)的session、鑒權(quán)技術(shù)。

  1. 有關(guān)Django介紹
Django是一個(gè)開放源代碼的Web應(yīng)用框架,由Python寫成。采用了MTV的框架模式,即模型M,視圖V和模版T。它最初是被開發(fā)來(lái)用于管理勞倫斯出版集團(tuán)旗下的一些以新聞內(nèi)容為主的網(wǎng)站的,即是CMS(內(nèi)容管理系統(tǒng))軟件,并于2005年7月在BSD許可證下發(fā)布。這套框架是以比利時(shí)的吉普賽爵士吉他手Django Reinhardt來(lái)命名的。2019年12月2日,Django 3. 0發(fā)布,也就是最新版本為3.0.

工作模式菜鳥教程文檔寫的非常清楚,這里引用一下:

工作流程圖里包括四部分,控制器一般是核心層,不過(guò)在django里控制器僅僅負(fù)責(zé)了url的路由,也就是定義訪問(wèn)路徑;視圖層干了許多控制器層應(yīng)該干的活,視圖層除了要讀取模型層的數(shù)據(jù)外,還需要將數(shù)據(jù)傳遞給模板渲染顯示;模型層就是直接與數(shù)據(jù)庫(kù)打交道,負(fù)責(zé)讀寫操作;模板層一般就是靜態(tài)html和相關(guān)資源文件。在django里都有這些層專有命名。

2. 入門第一步:安裝Django

與其它庫(kù)一樣,我們可以直接使用pip方式來(lái)安裝django。

pip install django如果遇到速度比較慢的狀況,可以加入國(guó)內(nèi)阿里云鏡像站點(diǎn)來(lái)安裝:

pip install -i https://mirrors.aliyun.com/pypi/simple django鑒于目前pycharm在python程序開發(fā)中的歡迎程度,我們可以下載一個(gè)社區(qū)版的pycharm安裝到本地,然后用于開發(fā)python程序。

如果使用pycharm,就先新建一個(gè)python項(xiàng)目,如本次將其命名為djangoProj。pycharm在新建項(xiàng)目的過(guò)程中就默認(rèn)使用了虛擬環(huán)境,也就是每個(gè)python項(xiàng)目之間環(huán)境是互相隔離的,這樣來(lái)保證各種第三方庫(kù)在該項(xiàng)目開發(fā)使用時(shí)的獨(dú)立地位,便于后續(xù)的移植和管理。不過(guò)這樣做的缺點(diǎn)在于,如果使用的第三方庫(kù)很多,會(huì)導(dǎo)致項(xiàng)目體積越來(lái)越大。

創(chuàng)建了djangoProj項(xiàng)目后,在項(xiàng)目目錄下就有env目錄,那就是虛擬環(huán)境目錄。敘述這么多,主要時(shí)為了說(shuō)明使用pycharm來(lái)開發(fā)django項(xiàng)目的過(guò)程。

然后在pyCharm的項(xiàng)目Terminal終端窗口執(zhí)行pip來(lái)完成django庫(kù)的安裝。

(venv) E:/cao/djangoProj>pip install djangoCollecting django Using cached Django-3.0.7-py3-none-any.whl (7.5 MB)Collecting sqlparse>=0.2.2 Using cached sqlparse-0.3.1-py2.py3-none-any.whl (40 kB)Collecting asgiref~=3.2 Using cached asgiref-3.2.7-py2.py3-none-any.whl (19 kB)Collecting pytz Using cached pytz-2020.1-py2.py3-none-any.whl (510 kB)Installing collected packages: sqlparse, asgiref, pytz, djangoSuccessfully installed asgiref-3.2.7 django-3.0.7 pytz-2020.1 sqlparse-0.3.1安裝成功后,django庫(kù)默認(rèn)會(huì)存放到env目錄的site-packages里。

3. 入門第二步:創(chuàng)建django站點(diǎn)

第二步中我們創(chuàng)建了一個(gè)djangoProj目錄,這里我們權(quán)且將起稱之為包含django項(xiàng)目的文件夾好了,因?yàn)楹罄m(xù)的django開發(fā)都是在該目錄下。

django有一套自己搭建站點(diǎn)的步驟和過(guò)程,可以使用django-admin腳本來(lái)創(chuàng)建站點(diǎn)及其站點(diǎn)下的各個(gè)模塊,這里的站點(diǎn)對(duì)應(yīng)到django里名稱為project,站點(diǎn)下的各個(gè)模塊對(duì)應(yīng)到django里名稱為app應(yīng)用。

首先我們來(lái)創(chuàng)建一個(gè)站點(diǎn),操作時(shí)需要繼續(xù)使用djangoProj項(xiàng)目的terminal窗口,此時(shí)執(zhí)行django-admin startproject 站點(diǎn)名:

(venv) E:/cao/djangoProj>django-admin startproject myblog這里我創(chuàng)建了一個(gè)名為myblog的站點(diǎn)名。創(chuàng)建完成后,此時(shí)回到djangoProj目錄下就發(fā)現(xiàn)了多了一個(gè)myblog文件夾,同時(shí)里面還自動(dòng)創(chuàng)建一個(gè)manage.py和一個(gè)與站點(diǎn)名一致的子模塊,子模塊里同時(shí)創(chuàng)建了幾個(gè)文件:

4.入門第三步:創(chuàng)建業(yè)務(wù)模塊

有關(guān)這些文件的具體用途如上圖所示。現(xiàn)在我們開始使用manage.py這個(gè)腳本來(lái)創(chuàng)建業(yè)務(wù)模塊。例如在myblog站點(diǎn)里我想放置旅行travel、書籍book、數(shù)據(jù)data等子模塊,就可以使用manage.py來(lái)創(chuàng)建:

(venv) E:/cao/djangoProj/myblog>python manage.py startapp travel(venv) E:/cao/djangoProj/myblog>python manage.py startapp book(venv) E:/cao/djangoProj/myblog>python manage.py startapp data如果你對(duì)python比較熟悉,此時(shí)可以打開manage.py文件,看到其中主要語(yǔ)句為:

from django.core.management import execute_from_command_lineexecute_from_command_line(sys.argv)也就是execute_from_command_line是在django.core.management這個(gè)包里定義的,具體有哪些參數(shù),我們可以打開這個(gè)management包進(jìn)行查看。

上面我們創(chuàng)建了3個(gè)業(yè)務(wù)模塊,此時(shí)回到myblog站點(diǎn)目錄下發(fā)現(xiàn)已經(jīng)多了三個(gè)子目錄,名字分別為travel,book和data,打開其中任意一個(gè)子目錄,可以發(fā)現(xiàn)自動(dòng)創(chuàng)建了一些文件:

這些文件也就是后面要用的視圖、模型以及后臺(tái)管理部分代碼。

創(chuàng)建了業(yè)務(wù)模塊后,還需要將這些業(yè)務(wù)模塊添加到全局設(shè)定,此時(shí)進(jìn)入核心子模塊myblog目錄里修改setting.py文件,在INSTALLED_APPS列表里添加剛創(chuàng)建的業(yè)務(wù)名稱,具體如下:

# Application definitionINSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'book', #添加剛創(chuàng)建的業(yè)務(wù)名稱 'data', 'travel']5. 入門第四步:測(cè)試web服務(wù)

這一步還是很重要的,因?yàn)槲覀冃枰ㄟ^(guò)瀏覽器可以訪問(wèn)到各個(gè)模塊的頁(yè)面。首先我們來(lái)看如何訪問(wèn)django提供的默認(rèn)歡迎頁(yè)面,也就是測(cè)試是否安裝django成功頁(yè)面。此時(shí)需要開啟web服務(wù),django也自帶了測(cè)試websgi服務(wù),啟動(dòng)時(shí)需要在站點(diǎn)目錄下使用manage.py腳本來(lái)執(zhí)行:

(venv) E:/cao/djangoProj/myblog>python manage.py runserver執(zhí)行后,終端窗口就會(huì)有如下信息:

Watching for file changes with StatReloaderPerforming system checks...System check identified no issues (0 silenced).You have 17 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.June 11, 2020 - 09:50:28Django version 3.0.7, using settings 'myblog.settings'Starting development server at http://127.0.0.1:8000/Quit the server with CTRL-BREAK.可以看到提示了測(cè)試web訪問(wèn)方式為:http://127.0.0.1:8000,此時(shí)可以在瀏覽器地址里輸入該地址,出現(xiàn)火箭圖標(biāo)就表明請(qǐng)求成功:

這個(gè)端口設(shè)置為8000,地址為127.0.0.1,就是本地。這兩個(gè)參數(shù)可以自行設(shè)置,只需要在上述runserver命令后給定即可:

(venv) E:/cao/djangoProj/myblog>python manage.py runserver 127.0.0.1:2020如果ip地址想重新設(shè)置,需要在myblog那個(gè)核心子模塊的setting.py文件里添加如下代碼:

ALLOWED_HOSTS = ['*'] //使用*通配符默認(rèn)所有IP均可6. 入門第五步:設(shè)定訪問(wèn)路由

這個(gè)路由設(shè)定非常關(guān)鍵,關(guān)系到是否能夠成功訪問(wèn)各個(gè)業(yè)務(wù)模塊。此時(shí)主要使用三個(gè)文件,一個(gè)是myblog核心子模塊里的urls.py全局路由文件,一個(gè)是業(yè)務(wù)模塊如book里的urls.py局部路由文件,一個(gè)是業(yè)務(wù)模塊如book里的views.py視圖設(shè)置文件。

這里我們倒著來(lái),先進(jìn)入業(yè)務(wù)模塊book,由于book目錄里并無(wú)urls.py文件,需要先創(chuàng)建一個(gè)。然后在里面輸入如下內(nèi)容:

from django.urls import path #導(dǎo)入路徑相關(guān)配置from . import views #導(dǎo)入視圖viewsurlpatterns = [ path('', views.index,name="index"), #默認(rèn)訪問(wèn)book業(yè)務(wù)的首頁(yè)]上述urls.py文件里有一個(gè)urlpatterns列表,這里可以存放該業(yè)務(wù)的所有路由設(shè)定。設(shè)定時(shí)使用path函數(shù),里面?zhèn)魅?#39;'路徑構(gòu)造方式,views.index,視圖里的index訪問(wèn)函數(shù),name名稱為index。也就是用于訪問(wèn)book業(yè)務(wù)的index頁(yè)面。下面我們?cè)趘iews視圖文件里添加一下該函數(shù)名稱:

from django.http import HttpResponsedef index(request): msg="welcome to visit Dr.Cao's blog,2020!" return HttpResponse(msg)這里我們定義了一個(gè)index函數(shù),用于返回一段話。由于是web請(qǐng)求,因此這里還使用django提供的http協(xié)議服務(wù),對(duì)于index方法,使用HttpResponse響應(yīng)函數(shù),傳入msg變量。

這樣業(yè)務(wù)模塊里的簡(jiǎn)單路由就設(shè)定好了,最后一步還需要回到核心子模塊里的全局路由設(shè)定urls.py文件里,將業(yè)務(wù)模塊添加進(jìn)去:

from django.contrib import adminfrom django.urls import path,includeurlpatterns = [ path('admin/', admin.site.urls), path('book',include('book.urls')) #使用include函數(shù),book.urls為業(yè)務(wù)模塊里的urls包]上述代碼中使用了include函數(shù),在include函數(shù)里添加業(yè)務(wù)模塊urls文件所在路徑即可。如book.urls這是對(duì)象的使用方法,book為業(yè)務(wù)模塊包,urls為該包里的對(duì)象,這是實(shí)際存在的。

經(jīng)過(guò)這三步操作后,下面我們?cè)跒g覽器地址上輸入:http://127.0.0.1:8000/book,就可以看到頁(yè)面上有顯示設(shè)定的那句話:

這樣對(duì)于業(yè)務(wù)模塊的訪問(wèn)路由構(gòu)造方式就完成了。如果還想實(shí)驗(yàn)一下,可以在book業(yè)務(wù)模塊里再添加一層路徑,即book業(yè)務(wù)的子頁(yè)面,例如 http://127.0.0.1:8000/book/sell,如果想訪問(wèn)sell子頁(yè)面,就需要在book模塊的urls中設(shè)定就可以了:

from django.urls import pathfrom . import viewsurlpatterns = [ path('', views.index,name="index"), path('/sell', views.sell,name="sell") #添加一個(gè)sell子頁(yè)面路徑,訪問(wèn)views里的sell函數(shù)]我們看到路徑為views里的sell函數(shù),此時(shí)我們回到book目錄的views.py文件,添加一個(gè)sell函數(shù)內(nèi)容如下:

from django.shortcuts import renderfrom django.http import HttpResponsedef index(request): msg="welcome to visit Dr.Cao's blog,2020!" return HttpResponse(msg)def sell(request): #增加的sell函數(shù) msg="你在訪問(wèn)曹鑒華的售書頁(yè)面" return HttpResponse(msg) #返回字符串變量響應(yīng)保存后再到瀏覽器地址欄里訪問(wèn),地址為:http://127.0.0.1:8000/book/sell,回車后瀏覽器顯示如下:

7. 入門第六步:訪問(wèn)HTML頁(yè)面

有了路由設(shè)定基礎(chǔ)后,對(duì)于訪問(wèn)HTML頁(yè)面的請(qǐng)求,也是放在views視圖里來(lái)處理的。此時(shí)回到全局設(shè)定setting.py文件里,可以看到有一個(gè)參數(shù)為TEMPLATES模板,里面的DIRS參數(shù)就是模板所在的路徑。

TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], #視圖文件存放位置的設(shè)定 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, },]如果我們?cè)O(shè)定在myblog站點(diǎn)目錄新建一個(gè)templates子目錄,用于存放網(wǎng)頁(yè)文件,這里的DIRS參數(shù)就可以設(shè)定為:

'DIRS': [BASE_DIR+"templates",], #其中的BASE_DIR為項(xiàng)目根目錄路徑修改后保存下來(lái)。接下來(lái)就可以新建這個(gè)templates目錄,并在里面創(chuàng)建一個(gè)網(wǎng)頁(yè)文件index.html,內(nèi)容可以示例如下:

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>myblog book</title></head><body><p>歡迎訪問(wèn)曹鑒華博客,本博客將推出系列講座</p></body></html>接下來(lái)回到book目錄的views視圖文件,修改其渲染方式為render:

from django.shortcuts import renderfrom django.http import HttpResponsedef index(request): msg="welcome to visit Dr.Cao's blog,2020!" return HttpResponse(msg)def sell(request): msg={} #定義了一個(gè)字典 msg['data']="你在訪問(wèn)曹鑒華的售書頁(yè)面" #設(shè)置了鍵名為data,值為后面的語(yǔ)句 return render(request,'index.html',msg) #使用render渲染方式render渲染方式一般包括三個(gè)參數(shù),第一個(gè)為請(qǐng)求方式request,第二個(gè)模板網(wǎng)頁(yè)文件,第三個(gè)為攜帶的參數(shù),第三個(gè)參數(shù)如果沒有變量傳遞可以不給。保存后,就可以在瀏覽器上訪問(wèn)了,如下圖是不帶參數(shù)顯示:

如果想將views視圖里渲染時(shí)的參數(shù)在網(wǎng)頁(yè)端顯示,就需要使用類似于flask前端的jinjia2引擎模板,渲染語(yǔ)法基本一致,如下:

{% python語(yǔ)句 %} {{ python變量 }}下面我們將index.html網(wǎng)頁(yè)內(nèi)容修改一下:

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>myblog book</title></head><body><p>歡迎訪問(wèn)曹鑒華博客,本博客將推出系列講座</p><p>{{data}}</p></body></html>保存后重新訪問(wèn)http://127.0.0.1:8000/book/sell,此時(shí)顯示效果為:

這樣我們也實(shí)現(xiàn)了變量的渲染顯示。到此位置,有了這六步基本操作,一個(gè)簡(jiǎn)單的站點(diǎn)就可以搭建完成了。對(duì)比f(wàn)lask框架,django在業(yè)務(wù)解耦方面確實(shí)要好一些,同時(shí)會(huì)自動(dòng)創(chuàng)建許多必要的文件,明顯提高開發(fā)效率。

關(guān)鍵詞:業(yè)務(wù),入門,學(xué)會(huì)

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉