Django學(xué)習(xí)(一)- 創(chuàng)建項(xiàng)目以及應(yīng)用

之前的學(xué)習(xí)過程中一直是沖著項(xiàng)目去板塊化學(xué)習(xí),忽略了很多基礎(chǔ)的東西,反而項(xiàng)目過程中會(huì)遇到很多問題,開發(fā)過程中也是會(huì)很多去參考其他人的代碼,所以這里重新把文檔學(xué)一遍并將過程中的筆記記錄下來

1. 創(chuàng)建項(xiàng)目——在當(dāng)前路徑下創(chuàng)建了一個(gè)mysite目錄

django-admin startproject mysite

2. 目錄結(jié)構(gòu)

image.png
  • 外部mysite/根目錄只是項(xiàng)目的容器。它的名字對(duì)Django來說無關(guān)緊要; 你可以將它重命名為你喜歡的任何東西。
  • manage.py:一個(gè)命令行實(shí)用程序,允許您以各種方式與此Django項(xiàng)目進(jìn)行交互,用作項(xiàng)目執(zhí)行
  • 內(nèi)部mysite/目錄是項(xiàng)目的實(shí)際Python包。它的名稱是您需要用來導(dǎo)入其中任何內(nèi)容的Python包名稱(例如mysite.urls
  • mysite/init.py:一個(gè)空文件,告訴Python該目錄應(yīng)該被視為Python包。如果您是Python初學(xué)者,請(qǐng)閱讀官方Python文檔中有關(guān)包的更多信息。
  • mysite/settings.py:此Django項(xiàng)目的設(shè)置/配置。 Django設(shè)置將告訴您有關(guān)設(shè)置如何工作的所有信息。
  • mysite/urls.py:這個(gè)Django項(xiàng)目的URL聲明; 您的Django支持的站點(diǎn)的“目錄”,可以在這里聲明網(wǎng)頁訪問路徑,您可以在URL調(diào)度程序中閱讀有關(guān)URL的更多信息。
  • mysite/wsgi.py:與WSGI兼容的Web服務(wù)器的入口點(diǎn),用于為您的項(xiàng)目提供服務(wù)。有關(guān)更多詳細(xì)信息,請(qǐng)參閱如何使用WSGI進(jìn)行部署。

3. 運(yùn)行服務(wù)器

python manage.py runserver

????之后就可以去網(wǎng)頁上面看到反饋信息,無非是一些版本信息,可以在settings.py里面做修改,命令行內(nèi)應(yīng)該也有如下輸出,證明啟動(dòng)無誤:


System check identified no issues (0 silenced).

You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.

January 11, 2019 - 15:50:53
Django version 2.1, using settings 'mysite.settings'
Starting development server at [http://127.0.0.1:8000/](http://127.0.0.1:8000/)
Quit the server with CONTROL-C.</pre>

  • 不要在生產(chǎn)環(huán)境中使用此服務(wù)器。它僅用于開發(fā)時(shí)使用
  • 默認(rèn)情況下,該runserver命令在端口8000的內(nèi)部IP上啟動(dòng)開發(fā)服務(wù)器,要改變端口直接跟在命令最后即可,python manage.py runserver 8080
  • 如果要更改服務(wù)器的IP,請(qǐng)將其與端口一起傳遞,python manage.py runserver 0:8000

4. 創(chuàng)建應(yīng)用(執(zhí)行python manage.py命令式請(qǐng)確定與manage.py在同一路徑下)

python manage.py startapp polls

項(xiàng)目與應(yīng)用程序的關(guān)系

????應(yīng)用程序主要是負(fù)責(zé)執(zhí)行操作,實(shí)現(xiàn)功能,類似博客里面的評(píng)論,登陸等等,而項(xiàng)目是特定網(wǎng)站的配置和應(yīng)用程序的集合。項(xiàng)目可以包含多個(gè)應(yīng)用程序。一個(gè)應(yīng)用程序可以在多個(gè)項(xiàng)目中。執(zhí)行應(yīng)用創(chuàng)建命令之后會(huì)在當(dāng)前路徑下建立如下目錄

image.png

5. 應(yīng)用結(jié)構(gòu)

i. 視圖

????這里從單詞就能看出來作用,類似MVC里面的views,主要是與頁面視圖相關(guān)的邏輯代碼,并返回?cái)?shù)據(jù)給頁面使用

from django.http import HttpResponse


def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")
  • HttpResponse是系統(tǒng)http模塊方法,可通過它直接返回字符串,返回頁面更多的使用render函數(shù)

ii. URL映射

????要調(diào)用視圖,我們需要將其映射到URL

????這里的映射配置一般寫在urls.py里面,可以直接寫在大項(xiàng)目目錄下的urls.py里面,但是為了區(qū)分不同應(yīng)用間的功能,我們往往會(huì)在每個(gè)應(yīng)用中獨(dú)立出一個(gè)urls.py配置文件(配置類似,可以直接復(fù)制過去更改相應(yīng)path),在最外部項(xiàng)目下面的urls.py里面調(diào)用include方法配置即可

????這里配置好應(yīng)用的urls之后我們?nèi)ロ?xiàng)目配置中設(shè)置URLconfig指向,這里需要導(dǎo)入include方法,該include()函數(shù)允許引用其他URLconf。每當(dāng)Django遇到時(shí)include(),它都會(huì)刪除與該點(diǎn)匹配的URL的任何部分,并將剩余的字符串發(fā)送到包含的URLconf以進(jìn)行進(jìn)一步處理。

????urls里面關(guān)于path的設(shè)置涉及四個(gè)參數(shù),兩個(gè)必需: route和view,以及兩個(gè)可選:kwargs,和name。

route: route(路由)是一個(gè)包含URL模式的字符串。訪問時(shí)請(qǐng)求的路徑,處理請(qǐng)求時(shí),Django從第一個(gè)模式開始urlpatterns并沿著列表向下移動(dòng),將請(qǐng)求的URL與每個(gè)模式進(jìn)行比較,直到找到匹配的模式。這里不會(huì)對(duì)請(qǐng)求方法(GET/POST)進(jìn)行區(qū)分

view: 當(dāng)Django找到匹配的模式時(shí),它調(diào)用指定的視圖函數(shù),其中一個(gè)HttpRequest對(duì)象作為第一個(gè)參數(shù),并且路由中的任何“捕獲”值作為關(guān)鍵字參數(shù)。相當(dāng)于傳遞一個(gè)視圖函數(shù)中的方法,我們稍后會(huì)給出一個(gè)例子。

kwargs: 任意關(guān)鍵字參數(shù)可以在字典中傳遞到目標(biāo)視圖。我們不打算在教程中使用Django的這個(gè)功能(目前用處不多)

name: 命名您的URL可以讓您從Django的其他地方明確地引用它,特別是在模板中。此強(qiáng)大功能允許您在只觸摸單個(gè)文件的同時(shí)對(duì)項(xiàng)目的URL模式進(jìn)行全局更改。相當(dāng)于是給你調(diào)用的視圖函數(shù)起一個(gè)名字,之后在返回的模板頁面里面方便調(diào)用


polls/的urls.py

from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

mysite/的urls.py

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

至此我們已經(jīng)完成了第一個(gè)Django項(xiàng)目的第一部分,可以執(zhí)行服務(wù)器然后去頁面看一下效果,應(yīng)該就是你視圖函數(shù)里面編寫的字符串內(nèi)容,記得安裝創(chuàng)建的應(yīng)用哦

  • 應(yīng)用創(chuàng)建并且編寫好視圖函數(shù)以及urls等配置時(shí)記得去settings里面安裝應(yīng)用,將應(yīng)用名字添加進(jìn)INSTALLED_APPS即可
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容