006 django的模板语法 标签嵌入,继承,路由反向代理

模板语法之 代码复用

深度查询语法 解决变量的变形问题
逻辑语法  解决的容器元素的遍历取出的问题
以上两种解决了在一个页面的代码问题,多个标签如果想在不同的页面中去使用,该如何处理,
现在解决代码复用的问题

1、 传统模板分离 include 嵌入模板

把公共的标签,独立出来,任意页面使用的时候,使用include 嵌入,方便,缺点是过于碎片化
在模板文件内引入
{% include 'appo1/adver.html' %}
# 标签的格式 样式+标签主体  ,注意样式的名称不要和模板内的样式名称重名
<style>
.adver {
    width: 100px;
    height: 80px;
    background-color: rosybrown;
    position: fixed;
    bottom: 10px;
    right: 10px;
}
</style>

<div class="adver">广告</div>



image-20230323103714617

2、 继承模板

多个标签如果想在不同的页面中去使用,该如何处理,利用模板的继承

base.html

# 添加一个黑盒子,引用的文件替换内容的地方
{% block base %}
<p>hell</p> 
默认数据
{% endblock  base %}
{% extends 'appo1/base.html' %}
# 继承模板文件 


{% block base %} # 替换黑盒子的语法,模板盒子的默认内容替换成自己的。
    <div>

        <ul>
            {% for order in order_list %}
                <li>{{ order }}</li>
            {% endfor %}
        </ul>
    
    </div>

{% endblock %}

数据模板就可以解决代码重复的问题。在模板文件中只需要处理当前页面独有的数据。
1、继承extends ,要在主体页面的第一行,
2、block要设置默认值,需要改的,在继承页面 重新赋值即可,不修改的继承默认值
3、在模板文件中 黑盒的endblock 添加盒子的名称,显示更加的友好,
4、include 和 block一样不能设置名称的重名


{% extends 'appo1/base.html' %}
{% block base %} 
{{ block.super }}  #5、子标签显示父类的默认标签,也就是 子类重用父类方法,从父类的属性找到标签,显示
    <div>

        <ul>
            {% for order in order_list %}
                <li>{{ order }}</li>
            {% endfor %}
        </ul>

    </div>

{% endblock %}

路由的反向解析

路由分发
urlpatterns = [
    path('index', views.index),
    path('order', views.order)
]


html文件
<li><a href="http://127.0.0.1:8000/index">首页</a></li>
<li><a href="http://127.0.0.1:8000/order">订单页面</a></li>

1,在页面填写的a标签链接,是直接写死的ip、端口,路径。游览器页面的请求的优化,可以写绝对路径或者相对路径,简写成"/order",
<li><a href="/index">首页</a></li>
<li><a href="/order">订单页面</a></li>
2 随着业务和功能的不断扩张,order这个路径的名称需要更改,但是所有的页面中写死了路径名称,
那么就需要在当前路径下设置一个反向解析的名字,也就是别名的概念,所有的页面中要跳转某一个路径的话,获取别名,通过别名获取到真正的路径名称,这样路径的名称可以任意更改,已达到正常解析的目的。
3、如果路径中使用正则的匹配,要加上能匹配上数值,正确的跳转。


urlpatterns = [
    path('index', views.index,name='shouye'),
    path('order', views.order,name = 'dingdan')
]

可以通过 IP  域名 web服务三者的关系进行理解。 访问www.baidu.com 就是访问

模板文件中使用

image-20230323164346197

image-20230323164311105

视图层使用

当登录页面需要用到重定向的时候,找到的路径名称也有可以变化,也需要获取最新的路径名称。,
在urls中设置别名,然后在视图上通过reverse 获取到别名所代表的目录。在redirect 重定向到目录 。

path('index', views.index, name='shouye'),

def login(request):
    from django.urls import reverse

    path = reverse('shouye')
    return redirect(path)
posted @ 2023-03-23 20:41  mmszxc  阅读(13)  评论(0)    收藏  举报