django知識點

django

創(chuàng)建項目:

django-admin startproject 項目名稱
例:
django-admin startproject test1
  • manage.py是項目管理文件肴熏,通過它管理項目糠惫。
  • 與項目同名的目錄拉盾,此處為test1。
  • *init*.py是一個空文件仍侥,作用是這個目錄test1可以被當作包使用要出。
  • settings.py是項目的整體配置文件。
  • urls.py是項目的URL配置文件农渊。
  • wsgi.py是項目與WSGI兼容的Web服務(wù)器入口患蹂,詳細內(nèi)容會在布署中講到。

創(chuàng)建應(yīng)用

使用一個應(yīng)用開發(fā)一個業(yè)務(wù)模塊砸紊,此處創(chuàng)建應(yīng)用名稱為booktest传于,完成圖書-英雄的信息維護。

創(chuàng)建應(yīng)用的命令如下:

python manage.py startapp booktest
  • *init.py*是一個空文件醉顽,表示當前目錄booktest可以當作一個python包使用格了。
  • tests.py文件用于開發(fā)測試用例,在實際開發(fā)中會有專門的測試人員徽鼎,這個事情不需要我們來做盛末。
  • models.py文件跟數(shù)據(jù)庫操作相關(guān)。
  • views.py文件跟接收瀏覽器請求否淤,進行處理悄但,返回頁面相關(guān)。
  • admin.py文件跟網(wǎng)站的后臺管理相關(guān)石抡。
  • migrations里面存放遷移生成的文件檐嚣。

安裝應(yīng)用

應(yīng)用創(chuàng)建成功后,需要安裝才可以使用啰扛,也就是建立應(yīng)用和項目之間的關(guān)聯(lián)嚎京,在test1/settings.py中INSTALLED_APPS下添加應(yīng)用的名稱就可以完成安裝。

開發(fā)服務(wù)器

在開發(fā)階段隐解,為了能夠快速預覽到開發(fā)的效果鞍帝,django提供了一個純python編寫的輕量級web服務(wù)器,僅在開發(fā)階段使用煞茫。

運行服務(wù)器命令如下:

python manage.py runserver ip:端口
例:
python manage.py runserver
可以不寫IP和端口帕涌,默認IP是127.0.0.1摄凡,默認端口為8000。

ORM框架

O是object蚓曼,也就類對象的意思亲澡,R是relation,翻譯成中文是關(guān)系纫版,也就是關(guān)系數(shù)據(jù)庫中數(shù)據(jù)表的意思床绪,M是mapping,是映射的意思其弊。在ORM框架中癞己,它幫我們把類和數(shù)據(jù)表進行了一個映射,可以讓我們通過類和類對象就能操作它所對應(yīng)的表格中的數(shù)據(jù)瑞凑。ORM框架還有一個功能末秃,它可以根據(jù)我們設(shè)計的類自動幫我們生成數(shù)據(jù)庫中的表格概页,省去了我們自己建表的過程籽御。

django中內(nèi)嵌了ORM框架,不需要直接面向數(shù)據(jù)庫編程惰匙,而是定義模型類技掏,通過模型類和對象完成數(shù)據(jù)表的增刪改查操作。

使用django進行數(shù)據(jù)庫開發(fā)的步驟如下:

  • 1.在models.py中定義模型類
  • 2.遷移
  • 3.通過類和對象完成數(shù)據(jù)增刪改查操作

數(shù)據(jù)遷移

生成遷移文件命令如下:
python manage.py makemigrations
執(zhí)行生成遷移文件命令后项鬼,會在應(yīng)用目錄下的migrations目錄中生成遷移文件哑梳。
執(zhí)行遷移命令如下:
python manage.py migrate

配置視圖

使用視圖時需要進行兩步操作:

* 1.定義視圖函數(shù)
* 2.配置URLconf
1.定義視圖

視圖就是一個Python函數(shù),被定義在views.py中绘盟。

視圖的必須有一個參數(shù)鸠真,一般叫request,視圖必須返回HttpResponse對象龄毡,HttpResponse中的參數(shù)內(nèi)容會顯示在瀏覽器的頁面上吠卷。

打開booktest/views.py文件,定義視圖index如下

from django.http import HttpResponse

def index(request):
    return HttpResponse("index")
2.配置URLconf
查找視圖的過程

請求者在瀏覽器地址欄中輸入url沦零,請求到網(wǎng)站后祭隔,獲取url信息,然后與編寫好的URLconf逐條匹配路操,如果匹配成功則調(diào)用對應(yīng)的視圖函數(shù)疾渴,如果所有的URLconf都沒有匹配成功,則返回404錯誤屯仗。

一條URLconf包括url規(guī)則搞坝、視圖兩部分:

  • url規(guī)則使用正則表達式定義。
  • 視圖就是在views.py中定義的視圖函數(shù)魁袜。

需要兩步完成URLconf配置:

  • 1.在應(yīng)用中定義URLconf
  • 2.包含到項目的URLconf中

在booktest/應(yīng)用下創(chuàng)建urls.py文件瞄沙,定義代碼如下:

from django.conf.urls import url
from booktest import views
urlpatterns = [
    url(r'^$', views.index),
]

包含到項目中:打開test1/urls.py文件己沛,為urlpatterns列表增加項如下:

url(r'^', include('booktest.urls')),

test1/urls.py文件完整代碼如下:

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

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^', include('booktest.urls')),
]

視圖調(diào)用模板

視圖調(diào)用模板都要執(zhí)行以上三部分,于是Django提供了一個函數(shù)render封裝了以上代碼距境。 方法render包含3個參數(shù):

  • 第一個參數(shù)為request對象
  • 第二個參數(shù)為模板文件路徑
  • 第三個參數(shù)為字典申尼,表示向模板中傳遞的上下文數(shù)據(jù)

打開booktst/views.py文件,調(diào)用render的代碼如下:

from django.shortcuts import render

def index(request):
    context={'title':'圖書列表','list':range(10)}
    return render(request,'booktest/index.html',context)

url參數(shù)

情況一:位置參數(shù)

1)在booktest/urls.py中垫桂,修改fan2如下:

url(r'^fan(\d+)_(\d+)/$', views.fan3,name='fan2'),

2)在booktest/views中师幕,定義視圖fan3如下:

def fan3(request, a, b):
    return HttpResponse(a+b)
情況二:關(guān)鍵字參數(shù)

1)在booktest/urls.py中,修改fan2如下:

url(r'^fan(?P<id>\d+)_(?P<age>\d+)/$', views.fan4,name='fan2'),

2)在booktest/views中诬滩,定義視圖fan4如下:

def fan4(request, id, age):
    return HttpResponse(id+age)

反向解析

要實現(xiàn)反向解析功能霹粥,需要如下步驟:

1)在test4/urls.py中為include定義namespace屬性疼鸟。

url(r'^',include('booktest.urls',namespace='booktest')),

2)在booktest/urls.py中為url定義name屬性后控,并修改為fan2。

url(r'^fan2/$', views.fan2,name='fan2'),

3)在模板中使用url標簽做超鏈接空镜,此處為templates/booktest/fan1.html文件浩淘。

<html>
<head>
    <title>反向解析</title>
</head>
<body>
普通鏈接:<a href="/fan2/">fan2</a>
<hr>
反向解析:<a href="{%url 'booktest:fan2'%}">fan2</a>
</body>
</html>

反向解析也可以應(yīng)用在視圖的重定向中。

from django.shortcuts import redirect
from django.core.urlresolvers import reverse

return redirect(reverse('booktest:fan2'))
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吴攒,一起剝皮案震驚了整個濱河市张抄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌洼怔,老刑警劉巖署惯,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異镣隶,居然都是意外死亡极谊,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門安岂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來轻猖,“玉大人,你說我怎么就攤上這事嗜闻⊥梢溃” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵琉雳,是天一觀的道長样眠。 經(jīng)常有香客問我,道長翠肘,這世上最難降的妖魔是什么檐束? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮束倍,結(jié)果婚禮上被丧,老公的妹妹穿的比我還像新娘盟戏。我一直安慰自己,他們只是感情好甥桂,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布柿究。 她就那樣靜靜地躺著,像睡著了一般黄选。 火紅的嫁衣襯著肌膚如雪蝇摸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天办陷,我揣著相機與錄音貌夕,去河邊找鬼。 笑死民镜,一個胖子當著我的面吹牛啡专,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播制圈,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼们童,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了离唐?” 一聲冷哼從身側(cè)響起病附,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤问窃,失蹤者是張志新(化名)和其女友劉穎亥鬓,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體域庇,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡嵌戈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了听皿。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片熟呛。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖尉姨,靈堂內(nèi)的尸體忽然破棺而出庵朝,到底是詐尸還是另有隱情,我是刑警寧澤又厉,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布九府,位于F島的核電站,受9級特大地震影響覆致,放射性物質(zhì)發(fā)生泄漏侄旬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一煌妈、第九天 我趴在偏房一處隱蔽的房頂上張望儡羔。 院中可真熱鬧宣羊,春花似錦、人聲如沸汰蜘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽族操。三九已至赞枕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間坪创,已是汗流浹背炕婶。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留莱预,地道東北人柠掂。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像依沮,于是被迫代替她去往敵國和親涯贞。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359

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