啟動(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ě),例如可以將其命名為blog或weblog。
這是組織源代碼的一種方式?,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