Django入門(mén)學(xué)習(xí)Day02:創(chuàng)建項(xiàng)目

啟動(dòng)一個(gè)新項(xiàng)目

項(xiàng)目創(chuàng)建

????執(zhí)行下面的命令來(lái)創(chuàng)建一個(gè)新的 Django 項(xiàng)目:

????django-admin startproject myproject

????命令行工具django-admin會(huì)在安裝Django的時(shí)候一起自動(dòng)安裝好。

????執(zhí)行了上面的命令以后,系統(tǒng)會(huì)為Django項(xiàng)目生成基礎(chǔ)文件夾結(jié)構(gòu)。

????現(xiàn)在,我們的myproject目錄結(jié)構(gòu)如下所示:

myproject/? ? ? ? ? ? ? ? ? <--?項(xiàng)目所在的根目錄

|-- myproject/? ? ? ? ? ? <-- Django項(xiàng)目文件夾

|? ? |-- myproject/

|? ? |? ? |-- __init__.py

|? ? |? ? |-- settings.py

|? ? |? ? |-- urls.py

|? ? |? ? |-- wsgi.py

|? ? +-- manage.py

我們最初的項(xiàng)目結(jié)構(gòu)由五個(gè)文件組成:

manage.py:使用django-admin命令行工具的快捷方式。它用于運(yùn)行與我們項(xiàng)目相關(guān)的管理命令。我們將使用它來(lái)運(yùn)行開(kāi)發(fā)服務(wù)器,運(yùn)行測(cè)試,創(chuàng)建遷移等等。

__init.py:這個(gè)空文件告訴python這個(gè)文件夾是一個(gè)python包。

settings.py:這個(gè)文件包含了所有的項(xiàng)目配置。將來(lái)我們會(huì)一直提到這個(gè)文件!

urls.py:這個(gè)文件負(fù)責(zé)映射我們項(xiàng)目中的路由和路徑。例如,如果你想在訪(fǎng)問(wèn)URL?/ about/?時(shí)顯示某些內(nèi)容,則必須先在這里做映射關(guān)系。

wsgi.py:該文件是用于部署的簡(jiǎn)單網(wǎng)關(guān)接口。

django設(shè)置中文時(shí)區(qū)

在myproject/settings.py文件中做如下修改即可實(shí)現(xiàn)中文切換:


網(wǎng)絡(luò)服務(wù)啟動(dòng)

django自帶了一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)服務(wù)器。在開(kāi)發(fā)過(guò)程中非常方便,所以我們無(wú)需安裝任何其他軟件即可在本地運(yùn)行項(xiàng)目。我們可以通過(guò)執(zhí)行命令來(lái)測(cè)試一下它:

python manage.py runserver

現(xiàn)在,你可以忽略終端中出現(xiàn)的遷移錯(cuò)誤;我們將在稍后討論。

現(xiàn)在在Web瀏覽器中打開(kāi)URL:http://127.0.0.1:8000,你應(yīng)該看到下面的頁(yè)面:


使用組合鍵?Control + C來(lái)終止開(kāi)發(fā)服務(wù)器。

Django 應(yīng)用

在Django的哲學(xué)中,我們有兩個(gè)重要的概念:

app:是一個(gè)可以做完成某件事情的Web應(yīng)用程序。一個(gè)應(yīng)用程序通常由一組models(數(shù)據(jù)庫(kù)表),views(視圖),templates(模板),tests(測(cè)試)?組成。

project:是配置和應(yīng)用程序的集合。一個(gè)項(xiàng)目可以由多個(gè)應(yīng)用程序或一個(gè)應(yīng)用程序組成。

請(qǐng)注意,如果沒(méi)有一個(gè)project,你就無(wú)法運(yùn)行Django應(yīng)用程序。像博客這樣的簡(jiǎn)單網(wǎng)站可以完全在單個(gè)應(yīng)用程序中編寫(xiě),例如可以將其命名為blogweblog。

這是組織源代碼的一種方式?,F(xiàn)在剛開(kāi)始,判斷什么是或不是應(yīng)用程序這些還不太重要。包括如何組織代碼等?,F(xiàn)在不用擔(dān)心那些問(wèn)題!首先讓我們對(duì)Django的API和基礎(chǔ)知識(shí)進(jìn)行梳理一遍。

好的!那么,為了方便說(shuō)明,我們來(lái)創(chuàng)建一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)論壇討論區(qū)。要?jiǎng)?chuàng)建我們的第一個(gè)應(yīng)用程序,請(qǐng)?zhí)D(zhuǎn)到manage.py文件所在的目錄并執(zhí)行以下命令:

django-admin startapp boards

注意!我們這次使用的命令是startapp

通過(guò)這條指令,系統(tǒng)會(huì)給我們創(chuàng)建以下目錄結(jié)構(gòu):

myproject/

|-- myproject/

|? ? |-- boards/? ? ? ? ? ? ? ? <-- 我們新的Django應(yīng)用(app)!

|? ? |? ? |-- migrations/

|? ? |? ? |? ? +-- __init__.py

|? ? |? ? |-- __init__.py

|? ? |? ? |-- admin.py

|? ? |? ? |-- apps.py

|? ? |? ? |-- models.py

|? ? |? ? |-- tests.py

|? ? |? ? +-- views.py

|? ? |-- myproject/

|? ? |? ? |-- __init__.py

|? ? |? ? |-- settings.py

|? ? |? ? |-- urls.py

|? ? |? ? |-- wsgi.py

|? ? +-- manage.py

下面,我們來(lái)探討每個(gè)文件的作用:

migrations/:在這個(gè)文件夾里,Django會(huì)存儲(chǔ)一些文件以跟蹤你在models.py文件中創(chuàng)建的變更,用來(lái)保持?jǐn)?shù)據(jù)庫(kù)和models.py的同步。

admin.py:這個(gè)文件為一個(gè)django內(nèi)置的應(yīng)用程序Django Admin的配置文件。

apps.py:這是應(yīng)用程序本身的配置文件。

models.py:這里是我們定義Web應(yīng)用程序數(shù)據(jù)實(shí)例的地方。models會(huì)由Django自動(dòng)轉(zhuǎn)換為數(shù)據(jù)庫(kù)表。

tests.py:這個(gè)文件用來(lái)寫(xiě)當(dāng)前應(yīng)用程序的單元測(cè)試。

views.py:這是我們處理Web應(yīng)用程序請(qǐng)求(request)/響應(yīng)(resopnse)周期的文件。

現(xiàn)在我們創(chuàng)建了我們的第一個(gè)應(yīng)用程序,讓我們來(lái)配置一下項(xiàng)目以便啟用這個(gè)應(yīng)用程序。

要做到這一點(diǎn),打開(kāi)settings.py并嘗試找到INSTALLED_APPS變量:

settings.py

INSTALLED_APPS = [

? ? 'django.contrib.admin',

? ? 'django.contrib.auth',

? ? 'django.contrib.contenttypes',

? ? 'django.contrib.sessions',

? ? 'django.contrib.messages',

? ? 'django.contrib.staticfiles',

]

????如你所見(jiàn),Django默認(rèn)已經(jīng)安裝了6個(gè)內(nèi)置應(yīng)用程序。它們提供大多數(shù)Web應(yīng)用程序所需的常用功能,如身份驗(yàn)證,會(huì)話(huà),靜態(tài)文件管理(圖像,JavaScript,CSS等)等。

????我們將會(huì)在本系列教程中探索這些應(yīng)用程序。但現(xiàn)在,先不管它們,只需將我們的應(yīng)用程序boards添加到INSTALLED_APPS列表即可:

INSTALLED_APPS = [

? ? 'django.contrib.admin',

? ? 'django.contrib.auth',

? ? 'django.contrib.contenttypes',

? ? 'django.contrib.sessions',

? ? 'django.contrib.messages',

? ? 'django.contrib.staticfiles',

? ? 'boards',

]

Hello, World!

現(xiàn)在來(lái)寫(xiě)我們的第一個(gè)視圖(view)。我們將在下一篇教程中詳細(xì)探討它。但現(xiàn)在,讓我們?cè)囋嚳纯慈绾斡肈jango創(chuàng)建一個(gè)新頁(yè)面。

打開(kāi)boards應(yīng)用程序中的boards/views.py文件,并添加以下代碼:

views.py

from django.http import HttpResponse

def home(request):

????return HttpResponse('Hello, World!')

視圖是接收httprequest對(duì)象并返回一個(gè)httpresponse對(duì)象的Python函數(shù)。接收?request?作為參數(shù)并返回?response?作為結(jié)果。這個(gè)流程你必須記??!

我們?cè)谶@里定義了一個(gè)簡(jiǎn)單的視圖,命名為home,它只是簡(jiǎn)單地返回一個(gè)信息,一個(gè)字符串hello,world!

現(xiàn)在我們必須告訴Django什么時(shí)候會(huì)調(diào)用這個(gè)view。這需要在項(xiàng)目目錄下的myproject/urls.py文件中完成:

urls.py

from django.conf.urls import url

from django.contrib import admin

from boards import views

urlpatterns = [

? ? ?url(r'^$', views.home, name='home'),

????url(r'^admin/', admin.site.urls),

]

????如果你將上面的代碼片段與你的urls.py文件進(jìn)行比較,你會(huì)注意到我添加了以下新代碼:url(r'^ $',views.home,name ='home')并通過(guò)from boards import views從我們的應(yīng)用程序boards中導(dǎo)入了views模塊。

????現(xiàn)在,Django使用正則表達(dá)式來(lái)匹配請(qǐng)求的URL。對(duì)于我們的home視圖,我使用^$?正則,它將匹配一個(gè)空路徑,也就是主頁(yè)(這個(gè)URL:http://127.0.0.1:8000?)。如果我想匹配的URL是?http://127.0.0.1:8000/homepage/?,那么我的URL正則表達(dá)式就會(huì)是:url(r'^homepage/$', views.home, name='home')。

????我們來(lái)看看會(huì)發(fā)生什么:

????python manage.py runserver

????在一個(gè)Web瀏覽器中,打開(kāi)?http://127.0.0.1:8000?這個(gè)鏈接:


????就是這樣!成功創(chuàng)建了你的第一個(gè)視圖。

原文:https://github.com/pythonzhichan/django-beginners-guide/blob/master/GettingStarted-2.md

最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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