緣起
既然python都學了,學習python的時候感覺是相見恨晚,一種新的程式設計語言帶給我一種新的思考問題的方式,為了鞏固學過的東西并進一步學習python,就想學學Django,看看會不會帶給我關于web新的東西。把自己學習過程記錄在這裡,發現每次寫部落格都是對學習過的東西的一次整理和提升。
建立一個project
startproject
python和Django的安裝不再詳述,我的環境python2.7,Django1.9.7 。
django-admin startproject mysite
上面這句話建立了一個project名稱位mysite,這個名稱是可以修改的,目錄結構如下:
.
├── manage.py
└── mysite
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
對于上面幾個檔案的介紹:
manage.py:與Django進行互動的指令行工具,比如後面根據model生成資料庫表結構、供開發使用的server等都是使用該工具,在manage.py的同級目錄使用python manage.py 可以看到可以使用的指令清單。
mysite:這個才是工程的包名。
__init__.py:表明mysite是一個包。
setting.py:Django的配置檔案,包括工程的app配置、資料庫配置、語言配置等。
urls.py:Django的dispatcher,根據不同的url映射到不同的視圖。
wsgi.py:WSGI是web server gateway interface,這個檔案是使project符合這種協定的入口點(entry-point)
runserver
python manage.py runserver
在manage.py的同級目錄下運作這個指令就可以看到以下内容:
Performing system checks...
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.
July 10, 2016 - 09:20:57
Django version 1.9.7, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
說明我們成功建立了一個project,在浏覽器中輸入 http://127.0.0.1:8000/,看到以下畫面表示成功:

Django自帶了一個開發伺服器,便于開發使用(Django官方強調不能用作生産環境),預設端口号是8000,如果想運作在别的端口号,以下面的方式運作即可,比如:8080
python manage.py runserver 8080
# 如果想在區域網路内其他電腦上通路你的站點
python manage.py runserver 0.0.0.0:8080
按Ctrl C停止伺服器。
建立一個app
一個project可以又多個app,一個app可以同時屬于多個project。通過以下指令建立一個app(在project目錄下)
django-admin startapp polls
建立app後的目錄結構,因為Django會自動建立一系列檔案,我們需要明白每個為檔案的作用
.
├── manage.py
├── mysite
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── polls
├── admin.py
├── apps.py
├── __init__.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
└── views.py
polls:app的根目錄
admin.py:Django自帶了一個管理界面,這個檔案可以注冊model在界面中管理
__init__.py:表明polls也是一個包
migrations:用來初始化資料庫,在執行python manage.py makemigrations 的時候會自動生成一個檔案在這裡
__init__.py:表明migrations也是一個包
models.py:在這個檔案裡面定義model類
tests.py:寫測試代碼
views.py:視圖,Django映射urls.py裡面的url的時候,在views.py裡面查找對應的處理方法
添加view
編輯views.py檔案
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
return HttpResponse("hello world")
添加映射
在polls目錄下建立urls.py檔案
from django.conf.urls import url
from . import views
urlpatterns = {
url(r'^$', views.index, name = 'index'),
}
将polls的urls.py告訴django,添加到mysite/urls.py
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^polls/', include('polls.urls')),
]
将我們polls包下面的urls.py include進去。大家注意到了polls/urls.py相當于是mysite/urls.py下面的一個子檔案,兩者 的寫法相似,url的第一個參數是一個正規表達式,第二個參數就是映射到的視圖或者包含的類,注意到原來有一個url(r'^admin/', admin.site.urls),這是Django管理界面的配置,還有就是我們寫的正規表達式是以polls/開始的url,也就是所有以該字首開始的url都會被分發到polls/urls裡面進一步尋找對應的視圖。
接下運作server,通路http://127.0.0.1:8000/polls/就可以看到以下内容——也就是我們在views.py裡面寫的内容
hello world
總結
其實主要就是通過django提供的一些指令我們基本上就完成了一個簡單的hello world,說到了Django的目錄結構,簡單涉及了一些view和url的寫法。
代碼位置
http://pan.baidu.com/s/1hs7ApwS