什么django
django是用python語言寫的一個(gè)web框架血柳。web框架的作用有以下幾點(diǎn):
- 減少重復(fù)的繁瑣的工作初橘,web開發(fā)中有很多重復(fù)的沒有技術(shù)含量的工作参歹,web工作可以將這些工作封裝好郎楼,或者自動(dòng)化實(shí)現(xiàn)
- 提供標(biāo)準(zhǔn)與規(guī)范务甥,便于開發(fā)人員合作。如果不用web框架粒氧,每個(gè)開發(fā)人員的代碼風(fēng)格都不一致越除,增加很大的溝通成本
- 提供了更加安全健壯的底層架構(gòu),即使是初入門的程序員外盯,只要按照框架的規(guī)范開發(fā)摘盆,也能快速完成一個(gè)不錯(cuò)的成品
以建房子為比喻,如果每個(gè)建筑工都以自己的想法去建饱苟,而且要負(fù)責(zé)所有的流程孩擂,包括打地基,建柱子掷空,壘磚頭等肋殴。這種造出來的房子肯定是又丑又不堅(jiān)固。如果這個(gè)房子的地基已經(jīng)打好了坦弟,基本的架構(gòu)都弄好了护锤,材料也都提供好了,建筑工只需要按照規(guī)范在這個(gè)基礎(chǔ)上加磚頭酿傍,即使是剛出道的小工烙懦,也能勝任。
總之赤炒,框架的作用就是讓我們把事情做得又快又好氯析。
本教程以django2.0為框架亏较,搭建一個(gè)簡(jiǎn)易的投票系統(tǒng),主要參考 django2.0的官方文檔
通過此教程掩缓,將實(shí)現(xiàn)一個(gè)基本的投票應(yīng)用
包括兩個(gè)部分:
前臺(tái):用戶可在前臺(tái)看到所有候選者并進(jìn)行投票
后臺(tái):管理員可在后臺(tái)對(duì)候選者和投票選項(xiàng)進(jìn)行增刪改查
注冊(cè)django2.0
注冊(cè)django2.0, 要求python版本不低于3.4
$ pip install django
驗(yàn)證django版本有兩種方式:
$ python
Python 3.6.2 (default, Dec 3 2017, 10:41:29)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> print(django.get_version())
2.0
$ python -m django --version
2.0
創(chuàng)建項(xiàng)目
$ django-admin startproject mysite
項(xiàng)目相當(dāng)于django的一個(gè)實(shí)例雪情,包含了所有配置文件以及所有應(yīng)用
項(xiàng)目名稱在命名時(shí)應(yīng)避免使用python內(nèi)置的關(guān)鍵字或者django的模塊組件名。如你辣,不能將項(xiàng)目命名為django巡通,這將會(huì)與Django自身沖突,也不能將項(xiàng)目命名為test舍哄,會(huì)與python內(nèi)置的test模塊沖突
目錄結(jié)構(gòu):
$ cd mysite
$ tree
.
├── manage.py
└── mysite
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
文件名釋義:
-
manage.py
實(shí)用的與django項(xiàng)目進(jìn)行交互的命令行工具 -
mysite
項(xiàng)目中的實(shí)際python包 -
mysite/__init__.py
空文件宴凉,表示這是一個(gè)python包 -
mysite/settings.py
此項(xiàng)目的配置文件 -
mysite/urls.py
url聲明文件 -
mysite/wsgi.py
wsgi服務(wù)器的配置文件
啟動(dòng)開發(fā)模式下的服務(wù)器
$ python manage.py runserver 0.0.0.0:8000
Performing system checks...
System check identified no issues (0 silenced).
You have 14 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
December 29, 2017 - 07:14:27
Django version 2.0, using settings 'mysite.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
啟動(dòng)服務(wù)后會(huì)提示你還沒有進(jìn)行數(shù)據(jù)遷移。這點(diǎn)先忽略表悬,后面會(huì)講到
瀏覽器訪問:http://127.0.0.1:8000/
就能看到django的歡迎頁
至此弥锄,我們已經(jīng)啟動(dòng)了python的開發(fā)服務(wù)器,這是一個(gè)純粹用python寫的web服務(wù)器蟆沫,僅用于開發(fā)模式下籽暇。當(dāng)我們修改代碼時(shí),一般情況下這個(gè)開發(fā)服務(wù)器會(huì)自動(dòng)重新加載饥追。但有些行為可能觸發(fā)不到開發(fā)服務(wù)器的自動(dòng)加載图仓,這時(shí)就需要我們手工重新啟動(dòng)
創(chuàng)建投票應(yīng)用
項(xiàng)目與應(yīng)用的區(qū)別:一個(gè)項(xiàng)目中可以包含多個(gè)應(yīng)用,應(yīng)用是指功能性的劃分模塊但绕。如一個(gè)電商網(wǎng)站可以作為一個(gè)項(xiàng)目,其中的日志系統(tǒng)惶看,購(gòu)物車系統(tǒng)都可以分割成獨(dú)立的應(yīng)用
在manage.py的同級(jí)目錄下執(zhí)行:
$ python manage.py startapp polls
應(yīng)用的目錄結(jié)構(gòu):
polls
├── admin.py
├── apps.py
├── __init__.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
└── views.py
第一個(gè)視圖文件
polls/views.py
#_*_coding:utf8_*_
from django.shortcuts import HttpResponse
def index(request):
return HttpResponse("你好捏顺,歡迎來到投票系統(tǒng)的主頁")
這是一個(gè)極簡(jiǎn)單的視圖文件,為了讓瀏覽器能訪問到這個(gè)視圖文件纬黎,我們需要配置url映射到這個(gè)文件
配置url
新增polls/urls.py文件
#_*_coding:utf8_*_
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
下一步是將polls/urls.py引入到mysite/urls.py文件中, 因?yàn)樗械膗rl配置入口都是源于mysite/urls.py
mysite/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
訪問 http://127.0.0.1:8000/polls/
顯示:
你好幅骄,歡迎來到投票系統(tǒng)的主頁
include()函數(shù)允許django引入其他url配置文件,當(dāng)瀏覽器訪問 http://127.0.0.1:8000/polls/ 時(shí)本今,匹配到url規(guī)則path('polls/', include('polls.urls'))
, 然后讀到polls/urls.py的配置:path('', views.index, name='index')
, 從而去執(zhí)行polls/views.py的index方法