項目

## 【博主推薦】1元學習《Django零基礎到項目實戰(zhàn)》視頻教程:http://dwz.cn/VHRVxWfC

演示地址: http://mxonline.mtianyan.cn

教程倉庫地址1: https://github.com/mtianyan/DjangoGetStarted

教程倉庫地址2: https://github.com/mtianyan/Mxonline2

教程倉庫地址3: https://github.com/mtianyan/Mxonline3

## 7-1 django templates模板繼承1

- 機構可以篩選類別

- 機構可以根據(jù)所在地區(qū)進行分類

右側我要學習功能: form表單提交

右下:授課機構排名

頁面頭部與底部為全局頭和全局底部。

### Django template 共用頭部底部機制

將head和foot放在兩個html中盾鳞,然后在寫其他需要這兩個部分的頁面時include進來犬性。

Django也是支持include機制的。

### include的問題

include的進來的死頁面雁仲,這時候該怎么辦仔夺?

解決這種問題:進行模板的繼承機制。定義一個父類的框架攒砖,子類可以替換其中一部分block,子類只需要重寫自己需要改變的block日裙。

### template中新建base.html

將課程機構列表頁吹艇。orglist拷貝進template目錄

將orglist內容替換base內容。

http://upload-images.jianshu.io/upload_images/1779926-0269443b69f80570.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240

將div收起來

![mark](http://upload-images.jianshu.io/upload_images/1779926-5f1ccbc5794f87d0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

loadstaticfiles & 修改靜態(tài)文件路徑為static

>這個步驟做過太多遍了昂拂,自行完成受神。耐心就行了。

### 定義父模板: 包含head & footer

title應該是可以被子頁面替換的所以要包起來格侯。

![mark](http://upload-images.jianshu.io/upload_images/1779926-9a1dbc2dbfe1fa24.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

css有共用的部分鼻听,也有可以被子頁面替換的部分财著。

![mark](http://upload-images.jianshu.io/upload_images/1779926-b6a74b2bb63653fa.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

js同理

![mark](http://upload-images.jianshu.io/upload_images/1779926-af7f46dd38bd5f8e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

面包屑是需要被各個頁面自己替換的。

![mark](http://upload-images.jianshu.io/upload_images/1779926-0f082eed1f72b00b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

將正文內容包起來撑碴;

![mark](http://upload-images.jianshu.io/upload_images/1779926-20d387c6bff07d56.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

此時base頁面就制作好了

## 7-2 開始orglist編寫

第一步:清空所有內容

- 繼承base頁面

![mark](http://upload-images.jianshu.io/upload_images/1779926-3e2e112cf2c39350.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

- 覆蓋父類的title

![mark](http://upload-images.jianshu.io/upload_images/1779926-392bc373f442d09a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

- 書寫課程機構view

organization/views.py

```

# encoding: utf-8

from django.views.generic.base import View

# 處理課程機構列表的view

class OrgView(View):

? ? def get(self,request):

? ? ? ? return render(request, "org-list.html", { })

```

- Django2.0.1配置課程機構首頁url

```

? ? # 課程機構首頁url

? ? path('org_list/', OrgView.as_view(), name="org_list"),

```

- Django1.9.8配置url:

```

? ? # 課程機構首頁url

? ? url(r'^org_list/$', OrgView.as_view(), name="org_list"),

```

### 修改面包屑

- base中只保留首頁

- org中重寫block custom_bread

- block之間沒有先后順序撑教。

- 將base中block content拿到orglist重寫

![mark](http://upload-images.jianshu.io/upload_images/1779926-29b97ffccbb18776.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

- 然后將base中block中間section刪除掉

![mark](http://upload-images.jianshu.io/upload_images/1779926-cab5c7f004fcd239.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

>orglist開始loadstaticfiles

`ctrl+d`快速刪除

![mark](http://upload-images.jianshu.io/upload_images/1779926-a863b3cbdeec1219.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

頁面的繼承關系使得變量也可以直接用

>比如user中的form數(shù)據(jù)傳遞到register文件當中.如果register繼承的是base頁面。

base頁面當中也是可以用這些數(shù)據(jù)的醉拓。`參數(shù)的向上傳遞`

每個request對象都會傳遞到html中來伟姐,如果繼承了base,request也會向上傳遞到base亿卤。

base中就可以加入我們的邏輯: 用戶是否登錄等愤兵。

小節(jié)結束對應commit:

>完成Django templates的繼承關系了解,機構列表展示頁排吴。對應7-1 & 2

## 7-3 課程機構列表頁數(shù)據(jù)展示1

確定由后臺傳過來的動態(tài)數(shù)據(jù):

授課機構列表本身秆乳, 授課機構的排名,所在地區(qū)(后臺取出所有地區(qū)), 機構類別寫成靜態(tài)钻哩,因為一般不怎么變動矫夷。

在xadmin中添加城市信息,課程信息憋槐。

添加城市

![mark](http://upload-images.jianshu.io/upload_images/1779926-00b5504640872151.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

添加機構双藕。

插播知識點:

![mark](http://upload-images.jianshu.io/upload_images/1779926-1a4a3bb3db05e42e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

這里指定的路徑是一個相對路徑

setting中要配置我們把文件存放在哪個根目錄之下

```

# 設置我們上傳文件的路徑

MEDIA_URL = '/media/'

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

```

在項目根目錄創(chuàng)建media文件夾

在后臺上傳圖片

![mark](http://upload-images.jianshu.io/upload_images/1779926-a6681f24ccb16635.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![mark](http://upload-images.jianshu.io/upload_images/1779926-920a803d08e95abe.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

修改機構信息中封面圖為logo

自行添加十個課程機構

### models中添加機構類別

organization/models.py:

```python

class CourseOrg(models.Model):

? ? ORG_CHOICES =(

? ? ? ? ("pxjg", u"培訓機構"),

? ? ? ? ("gx", u"高校"),

? ? ? ? ("gr", u"個人"),

? ? )

? ? name = models.CharField(max_length=50, verbose_name=u"機構名稱")

? ? # 機構描述,后面會替換為富文本展示

? ? desc = models.TextField(verbose_name=u"機構描述")

? ? # 機構類別:

? ? category = models.CharField(max_length=20, choices=ORG_CHOICES, verbose_name=u"機構類別", default="pxjg")

```

修改了models之后做數(shù)據(jù)庫的變動:

```python

makemigrations organization

migrate organization

```

![mark](http://upload-images.jianshu.io/upload_images/1779926-6d38fe7fbc30dcd9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

完成之后打開Navicat進行驗證:

![mark](http://upload-images.jianshu.io/upload_images/1779926-fc3fadf0c3bf8e27.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

可以看到新增了阳仔。

### 完善我們的view

將列表里的靜態(tài)數(shù)據(jù)變成后臺獲取的動態(tài)數(shù)據(jù)

organization/views.py

```python

from .models import CourseOrg, CityDict

class OrgView(View):

? ? def get(self,request):

? ? ? ? # 查找到所有的課程機構

? ? ? ? all_orgs = CourseOrg.objects.all()

? ? ? ? # 取出所有的城市

? ? ? ? all_citys = CityDict.objects.all()

? ? ? ? return render(request, "org-list.html", {

? ? ? ? ? ? "all_orgs":all_orgs,

? ? ? ? ? ? "all_citys": all_citys,

? ? ? ? })

```

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末忧陪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子近范,更是在濱河造成了極大的恐慌嘶摊,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件评矩,死亡現(xiàn)場離奇詭異叶堆,居然都是意外死亡,警方通過查閱死者的電腦和手機斥杜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門虱颗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蔗喂,你說我怎么就攤上這事忘渔。” “怎么了缰儿?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵畦粮,是天一觀的道長。 經(jīng)常有香客問我,道長宣赔,這世上最難降的妖魔是什么预麸? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮儒将,結果婚禮上吏祸,老公的妹妹穿的比我還像新娘。我一直安慰自己椅棺,他們只是感情好犁罩,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著两疚,像睡著了一般床估。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上诱渤,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天丐巫,我揣著相機與錄音,去河邊找鬼勺美。 笑死递胧,一個胖子當著我的面吹牛,可吹牛的內容都是我干的赡茸。 我是一名探鬼主播缎脾,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼占卧!你這毒婦竟也來了遗菠?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤华蜒,失蹤者是張志新(化名)和其女友劉穎辙纬,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體叭喜,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡贺拣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了捂蕴。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片譬涡。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖启绰,靈堂內的尸體忽然破棺而出昂儒,到底是詐尸還是另有隱情,我是刑警寧澤委可,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響着倾,放射性物質發(fā)生泄漏拾酝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一卡者、第九天 我趴在偏房一處隱蔽的房頂上張望蒿囤。 院中可真熱鬧,春花似錦崇决、人聲如沸材诽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽脸侥。三九已至,卻和暖如春盈厘,著一層夾襖步出監(jiān)牢的瞬間睁枕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工沸手, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留外遇,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓契吉,卻偏偏與公主長得像跳仿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子捐晶,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內容