项目

## 【博主推荐】1元学习《Django零基础到项目实战》视频教程: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

- 机构可以筛选类别

- 机构可以根据所在地区进行分类

右侧我要学习功能: 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 & 修改静态文件路径为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数据传递到register文件当中.如果register继承的是base页面。

base页面当中也是可以用这些数据的。`参数的向上传递`

每个request对象都会传递到html中来,如果继承了base,request也会向上传递到base。

base中就可以加入我们的逻辑: 用户是否登录等。

小节结束对应commit:

>完成Django templates的继承关系了解,机构列表展示页。对应7-1 & 2

## 7-3 课程机构列表页数据展示1

确定由后台传过来的动态数据:

授课机构列表本身, 授课机构的排名,所在地区(后台取出所有地区), 机构类别写成静态,因为一般不怎么变动。

在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')

```

在项目根目录创建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之后做数据库的变动:

```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

将列表里的静态数据变成后台获取的动态数据

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,

        })

```

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容