這是官方文檔上給的例子,按照這個例子一步一步走,可以對Django框架和操作有一個整體的認識。
創建一個基本的投票系統,包括兩部分的開發:
- 1.客戶訪問部分
- 2.后臺管理部分
首先,創建工程,利用Django的命令:
$ django-admin startproject mysite
項目目錄
創建完成后,可以看到以上目錄。其中,
- manage.py -- 這是一個命令行工具,具體有哪些命令,可以根據-help參數參看。
- mysite -- 這是項目的根目錄,有關項目的一些重要文件都放在這個文件下。
- settings.py -- 配置文件,項目相關配置都在這個文件中進行配置,比如說數據庫,應用,模板等配置。
- urls.py -- URL映射文件,它將URL與后臺的視圖函數進行映射。
- wsgi.py -- 用于與WSGI兼容的web服務器的接入。
創建app(應用)
$ python manage.py startapp polls
app目錄
其中,
- models.py -- 用于創建數據對象模型,用于生成對應的數據庫表。
- views.py -- 視圖文件,用于寫視圖函數,即處理函數。
- urls.py -- 映射文件,用于URL與views.py文件中的視圖函數映射。
- admin.py -- 管理文件,該文件用于后臺管理,可以將models.py中創建的數據對象模型注冊到admin.py文件中,使其能夠被后臺管理員管理。
- apps.py -- 應用文件,用于應用在項目中的配置。
- tests.py -- 測試文件,用于測試應用。
- migrateions -- 遷移目錄,保存每次修改過models.py后的數據庫遷移策略,在更新數據庫時會用到。
- static -- 靜態文件夾,用于保存靜態文件。
- templates -- 模板文件夾,用于保存一些模板。
注意,新建完app后并沒有這么多文件和目錄,有些目錄是后來自己創建的,比如static,templates這兩個目錄,還有urls.py這個文件都是后來自己創建的。
編寫最簡單版本
首先,編寫一個視圖函數,打開polls/views.py這個文件,并編寫以下代碼:
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
這可能是最簡單的視圖函數。為了能看到調用該視圖函數,需要為它做一個URL映射。
在polls目錄下創建urls.py文件(上面介紹過,在創建應用時,Django沒有給我們自動生成,這里我們自己手動創建),打開該文件并編寫以下代碼:
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),
]
上面我們創建的urls.py映射文件是針對polls這個應用創建的,如果想要是它生效,需要將它配置到項目的urls.py文件中,打開mysite/urls.py文件并添加include()如下:
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^polls/', include('polls.urls')),
url(r'^admin/', admin.site.urls),
]
include()這個方法是將polls/urls.py中的映射關聯到url ‘/polls/’之后。參數‘polls.urls’代表的是polls目錄下的urls.py文件。
注意,與include()方法相關聯的url之后不能有‘$’存在,因為在正則表達式中'$'代表結束符,而include()方法表示后面需要連接另一部分url。
然后,將應用配置到項目中去。打開mysite/settings.py文件,找到INSTALLED_APPS的位置,添加如下:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'polls.apps.PollsConfig',
]
至此,可以運行服務器看結果。
$ python manage.py runserver
默認端口是8000.