美文网首页
2020-05-06--Django项目5--模板继承重构

2020-05-06--Django项目5--模板继承重构

作者: program_white | 来源:发表于2020-05-07 14:24 被阅读0次

    1.显示org-list.html

    1.首先把org-list.html导入templates文件夹下
    2.在MXOnline/urls.py下配置url:

    from apps.organizations.views import OrgView
    #配置授课机构的列表展示
        path('orglist/',OrgView.as_view(),name = 'org_list'),
    ]
    

    3.在apps/organizations/view.py下编写初步的视图类:

    from django.shortcuts import render
    
    # Create your views here.
    from django.views.generic import View
    
    class OrgView(View):
        def get(self,request,*args,**kwargs):
            '''
            展示授课机构的列表页
            :param request:
            :param args:
            :param kwargs:
            :return:
            '''
            return render(request,'org-list.html')
    

    启动项目:
    访问:

    127.0.0.1:8000/orglist
    

    2.使用模板继承优化代码

    1.更改static文件的引入方式

    在html中更改:
    1.引入static的url

    {% load staticfiles %}
    

    这个staticfiles是在setings.py中设置的

    STATIC_URL = '/static/'
    

    2.使用引入
    例如:



    我们发现在settings中static的url设置成了/static/,对这里的static替换,正好就是之前的原始的路径。简单来说就是字符串的拼接

    这么修改的好处:当我们想修改static文件的位置时,可以直接改变settings中的url即可,不用大面积的替换

    org-list.html:



    index.html和login.html页面也相应修改

    2.模板继承优化代码

    1.新建base.html用于被继承,

    (1)在base.html中添加网页可被继承的部分

    • head部分(引用static部分),并添加一个插槽


    • 网页头部
      添加一下base.html的网页头部代码,因为之前在完成登录功能的时候,我们在index.html写了判断用户是否登录成功,如果成功显示用户的信息,否则不做改变,所以当用户登陆成功后,不管他浏览到哪,都是登陆状态。
      也就是这块代码:


    所以我们要把index.html的头部复制到base.html的头部,这样每个网页继承后都是有判断登录的功能的
    修改授课机构的超链接跳转到name = orglist的url


    • 添加面包屑插槽和内容插槽,在插槽中不写任何东西,子模版自行添加


    • 网页底部
      copy一下即可
    • 底部引用js部分,添加一个js插槽,用于子模版自行添加


    • title


    父模板插槽中的内容如果在子模版中被调用,那么就按照子模版中的内容来显示,没有调用插槽,默认显示父模板插槽中的内容。

    3.使用继承重写org-list.html的代码

    3.1继承base.html

    {% extends 'base.html' %}
    

    3.2复写面包屑插槽内容

    {#面包屑#}
    {% block custum_bread %}
    <section>
        <div class="wp">
            <ul class="crumbs">
                <li><a href="{% url 'index' %}">首页</a>></li>
                <li>课程机构</li>
            </ul>
        </div>
    </section>
    {% endblock %}
    

    并且修改面包屑中首页的超链接地址的格式:



    如果再其他页面使用面包屑时,就直接其页面中编写面包屑插槽并添加列表项即可.

    3.3筛选信息及主要内容的继承
    复制base.html中的内容插槽到orglist.html中,把自己的内容部分放入插槽中


    3.4title部分

    {#title#}
    {% block title%}
        授课机构
    {% endblock %}
    

    orglist.html页面没有css和js的重构
    运行:

    127.0.0.1:8000/orglist
    

    4.使用模板继承重写index页面

    3.2分析index页面的结构


    image.png

    相对于base.html添加了一条js



    对于index.html来说,继承base.html以后,需要改变两项:
    • 内容
    • js即可

    运行:



    点击授课机构:



    login.html与其他页面的结构没有相似之处,不适用继承来写。

    结果:

    运行:



    点击授课机构:



    我们发现了一个问题,点击授课机构以后,高亮还是首页,这说明我们划分的共用头部范围大了,所以他们的公用部分只有:

    在base.html的网页头部中找到这个盒子,把它添加到插槽中,用于继承



    那么继承以后怎么改变高亮的位置呢?
    我们发现这四个元素的显示是无序列表,想显示高亮也就是加上css样式。
    哪个想显示,哪个就有class选择器:

    所以我们在orglist.html中要多加一个插槽用于改变选项列表。
    并且把class的作用对象改为授课机构

    这样再次运行:
    点击授课机构:



    点击登录:
    输入正确的username和密码

    点击立即登录
    回到首页index,网页头部发生变化:

    再次进入授课机构;

    成功显示。
    最后提交github

    相关文章

      网友评论

          本文标题:2020-05-06--Django项目5--模板继承重构

          本文链接:https://www.haomeiwen.com/subject/pcmgghtx.html