Django安裝使用

Django 簡介

Django 是一個高質(zhì)量的WEB框架唯欣,它提供一套程序框架矫膨,讓我們更專注與WEB視圖與模型開發(fā)叠穆,提高WEB開發(fā)效率,節(jié)省時間尸疆。
Django的的設(shè)計模式
Django的設(shè)計模式為MVC模式,M即Model惶岭,為網(wǎng)頁的數(shù)據(jù)存取部分寿弱,由Django的數(shù)據(jù)庫層調(diào)用指定的數(shù)據(jù)庫,存取和修改數(shù)據(jù)按灶,Django支持四種數(shù)據(jù)庫引擎症革,PostgreSQL、MySQL鸯旁、SQLite和Oracle噪矛。要調(diào)用數(shù)據(jù)庫需要修改Django創(chuàng)建的工程的settings.py里的內(nèi)容。V即View铺罢,控制著數(shù)據(jù)顯示的內(nèi)容及顯示的方法艇挨,在Django中由視圖函數(shù)和模板處理,視圖函數(shù)是一個python函數(shù)韭赘,接收一個包含WEB網(wǎng)頁請求信息的對象缩滨,并返回一個可以在WEB網(wǎng)頁中顯示的對象,視圖函數(shù)處理和渲染模板。模板是個文檔,通常用來產(chǎn)生HTML格式內(nèi)容脉漏,模板控制著數(shù)據(jù)的顯示形式苞冯,是WEB瀏覽者能直觀感受到的部分。C為Control侧巨,即控制器舅锄,控制著WEB瀏覽者輸入的URL和視圖函數(shù)之間的映射,Django框架自行處理了這部分的大多數(shù)內(nèi)容司忱,需要由開發(fā)者做的只有提供映射表巧娱。開發(fā)者最需要關(guān)心的部分是模型、視圖函數(shù)和模板烘贴。 Django遵循著松散耦合的原則禁添,每一部分之間的關(guān)聯(lián)性不強,修改一部分時不影響到其它的部分桨踪,這是一種設(shè)計原則老翘,開發(fā)者在用Django開發(fā)web時也應(yīng)當遵循這樣的原則,這樣開發(fā)出來的的網(wǎng)頁代碼清晰锻离,可維護性高铺峭,每個開發(fā)者可以只專注與自己開發(fā)的模塊,而不用關(guān)心其它部分的內(nèi)容和結(jié)構(gòu)汽纠,能夠提高開發(fā)效率卫键。
Django安裝
Django由Python編寫,因此安裝Django需要Python環(huán)境虱朵,一般類Unix系統(tǒng)都裝有Python莉炉,Django已經(jīng)支持Python3,Django目前最新的版本為1.9.5碴犬,Django提供了長期支持版本1.8.12絮宁,支持到2018年4月以后,并不再更新和修復(fù)1.8版本以前的版本服协,因此绍昂,在使用Django時最好選用1.8及以后的版本,Django的一個長期支持版本為1.11版偿荷。 從官網(wǎng)可以下載到Django的各種版本窘游,下載后。解壓跳纳,進入目錄運行命令

$ sudo python setup.py install 

即可安裝成功忍饰。 在安裝時,要確保沒有安裝其它版本的Django棒旗,如果安裝了喘批,請卸載撩荣。卸載方法: 如果你用pip安裝,可以直接用pip卸載

$ pip uninstall Django

如果是使用源碼安裝饶深,直接在python的庫里找到Django的文件夾餐曹,并刪除,可以由以下方法找到Django的文件夾

$ python -c "import django; print(django.__path__)"

Django的模型敌厘、模板和視圖函數(shù)

一個簡單的web網(wǎng)頁

  • 首先創(chuàng)建一個Django項目
$ django-admin.py startproject mysite

在目錄下會創(chuàng)建一個mysite的目錄台猴,目錄的結(jié)構(gòu)

mysite
├── manage.py
└── mysite
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

manage.py是用來管理Django項目的帶有參數(shù)的命令管理器,你可以輸入

$ python manage.py help

來獲得它的所有用法俱两。
init.py用來告訴Python這是一個Python包饱狂。
settings.py用來設(shè)置Django項目的各項參數(shù)。
urls.py將相應(yīng)的URL映射到相應(yīng)的視圖函數(shù)上宪彩。
wsgi.py是一個將Django項目掛載到WEB服務(wù)器上的工具的腳本休讳。如何安裝和使用可以參考WSGI的官網(wǎng)。
在項目中創(chuàng)建一個名為polls的app

$ python manage.py startapp polls

polls的目錄結(jié)構(gòu)

polls
├── admin.py
├── apps.py
├── __init__.py
├── migrations
│   └── __init__.py
├── models.py
├── tests.py
└── views.py

project和app的區(qū)別: app是一個具體的網(wǎng)頁應(yīng)用尿孔,而工程包含許多個app俊柔,構(gòu)成一個站點。 在mysite/settings.py修改活合,讓Django知道app的存在

# Application definition

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'polls',                     #添加項
)
  • 修改視圖
from django.http import HttpResponse

# Create your views here.
def index(request):
    return HttpResponse("Hello,world. You're at the polls indes.")

在mysite文件夾下的url.py里如下配置

from django.conf.urls import include, url
from django.contrib import admin


urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^polls/',include('polls.urls')),    #添加項
]

在配置mysite目錄下的url時雏婶,include
里接受的參數(shù)是一個字符串,而不是一個模塊白指。url的第一個參數(shù)為加入了正則表達式的字符串留晚,正則表達式的具體語法參見RUNOOB.COM

  • 掛載網(wǎng)頁
    運行
$ python manage.py runserver

打開網(wǎng)頁輸入*127.0.0.1:8000/polls,便可看到一個簡單的網(wǎng)頁告嘲。

當你在網(wǎng)頁端輸入地址時错维,Django會根據(jù)mysite目錄下的settings.py里的配置找到URLconf,再根據(jù)其中的配置匹配對應(yīng)的視圖函數(shù)状蜗,然后調(diào)用視圖函數(shù)需五,視圖函數(shù)返回一個Httpresponse對象,Django將期轉(zhuǎn)換為網(wǎng)頁并顯示在瀏覽器中

使用模型

在polls/models.py輸入

from django.db import models

# Create your models here.
class Question(models.Model):
    question_text=models.CharField(max_length=200)
    pub_date=models.DateTimeField('date published')

    def __unicode__(self):
        return self.question_text

運行

$ python manage.py make migrations
$ python manage.py migrate

在數(shù)據(jù)庫里創(chuàng)建該模型轧坎。 在polls/views.py里修改視圖函數(shù)

from django.http import HttpResponse
from polls.models import Question
# Create your views here.
def index(request):
    lastest_question_list =Question.objects.order_by('-pub_date')[:5]
    output =','.join([p.question_text for p in lastest_question_list])
    return HttpResponse(output)

此時掛載網(wǎng)頁再刷新,網(wǎng)頁一片空白,證明我們已經(jīng)能夠正確調(diào)用模型了泽示,空白是因為數(shù)據(jù)庫里面并沒有寫入數(shù)據(jù)缸血。管理數(shù)據(jù)庫可以使用admin詳情參見Django Documentation

使用模板

在poll目錄下創(chuàng)建文件夾templates 在templates目錄下創(chuàng)建文件index.html

html>
<head>
        <title>Hello,everyone</title>
</head>
<body>
        <p>It is now {{ current_date }}.</p>
</body>
</html>

修改視圖函數(shù)

m django.shortcuts import render_to_response
import datetime
# Create your views here.
def index(request):
    now=datetime.datetime.now()
    return render_to_response('index.html',{'current_date':now})

刷新網(wǎng)頁,便在網(wǎng)頁上顯示了當前的日期和時間械筛。由于時區(qū)問題捎泻,顯示的時間與本地時間不符,可以在settings.py中修改時區(qū)埋哟。

用Apache和WSGI部署Django

首先確保Apachemod_wsgi已經(jīng)安裝好笆豁。 然后在/etc/apache2/site-available新建文件mysite.conf郎汪,寫入

ServerAdmin webmaster@localhost
DocumentRoot /home/feng/wyc/django/mysite

WSGIScriptAlias / /home/feng/wyc/django/mysite/mysite/wsgi.py
WSGIPythonPath /home/feng/wyc/django/mysite
<Directory /home/feng/wyc/django/mysite/mysite>
        <Files wsgi.py>
                Require all granted
        </Files>
</Directory>

運行命令

$ sudo a2ensite mysite.conf
$ sudo service apache2 reload

一般情況下,Django便已經(jīng)部署好了闯狱,如果遇到無法正常打開網(wǎng)頁的情況煞赢,可以參看apache的err.log,該文件在/var/log/apache2目錄下。

Django小結(jié)

這里只介紹了Django最基本的一些功能哄孤,運用這些簡單的功能便可以開發(fā)出一些簡單的網(wǎng)頁照筑,Django基礎(chǔ)知識不難,想要更詳細的或者更深入一部了解Django瘦陈,請參見官方教程或者Django Book 中文版凝危。 談一下學習Django的心得,在學習的過程中晨逝,要將參考文檔的每個實例都自己敲一遍蛾默,這樣可以發(fā)現(xiàn)在實際操作中遇到的問題,運行實例出現(xiàn)的問題在調(diào)試模式下網(wǎng)頁上都由詳細的錯誤提示捉貌,根據(jù)錯誤提示很容易找到問題的原因支鸡,自己解決問題,能夠加深認識和印象昏翰。還有一個是在遇到問題的時候盡可能的去找官方文檔或者官方說明苍匆,Django對應(yīng)的每一個版本都有官方手冊,基本上你所遇到的問題都可以在上面找到答案棚菊。在網(wǎng)上搜索到的答案一個是準確度不夠浸踩,它可能是運行的版本和你的版本不一樣或者其它方面有差別,另一個是網(wǎng)上的答案五花八門统求,可能你在網(wǎng)上找到答案的時間比你自己解決問題的時間還要長检碗。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市码邻,隨后出現(xiàn)的幾起案子折剃,更是在濱河造成了極大的恐慌,老刑警劉巖像屋,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件怕犁,死亡現(xiàn)場離奇詭異,居然都是意外死亡己莺,警方通過查閱死者的電腦和手機奏甫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凌受,“玉大人阵子,你說我怎么就攤上這事∈を龋” “怎么了挠进?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵色乾,是天一觀的道長。 經(jīng)常有香客問我领突,道長暖璧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任攘须,我火速辦了婚禮漆撞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘于宙。我一直安慰自己浮驳,他們只是感情好,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布捞魁。 她就那樣靜靜地躺著至会,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谱俭。 梳的紋絲不亂的頭發(fā)上奉件,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天,我揣著相機與錄音昆著,去河邊找鬼县貌。 笑死,一個胖子當著我的面吹牛凑懂,可吹牛的內(nèi)容都是我干的煤痕。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼接谨,長吁一口氣:“原來是場噩夢啊……” “哼摆碉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起脓豪,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤巷帝,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后扫夜,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體楞泼,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年笤闯,在試婚紗的時候發(fā)現(xiàn)自己被綠了现拒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡望侈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出勋桶,到底是詐尸還是另有隱情脱衙,我是刑警寧澤侥猬,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站捐韩,受9級特大地震影響退唠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜荤胁,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一瞧预、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧仅政,春花似錦垢油、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至辫封,卻和暖如春硝枉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背倦微。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工妻味, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人欣福。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓责球,卻偏偏與公主長得像,于是被迫代替她去往敵國和親劣欢。 傳聞我的和親對象是個殘疾皇子棕诵,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容