時(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í)慣使用它的話。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程序。(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里。(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è)文件:(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)行查看。# 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ù)(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)求成功:(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)路由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變量。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í)際存在的。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,回車后瀏覽器顯示如下: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ù)顯示:{% 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í)顯示效果為:關(guān)鍵詞:業(yè)務(wù),入門,學(xué)會(huì)
客戶&案例
營(yíng)銷資訊
關(guān)于我們
客戶&案例
營(yíng)銷資訊
關(guān)于我們
微信公眾號(hào)
版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。