加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Python Web Django 模板语言中的 extends,block 和 include

发布时间:2023-04-15 14:20:02 所属栏目:教程 来源:
导读:extends使用方法 首先 extends 也就是继承,子类继承父类的一些特性。在Django 模板中通过继承可以减少重复代码。 首先我们建立一个app,名字叫做 hello。别忘了在 sett

首先 extends 也就是继承,子类继承父类的
extends使用方法 首先 extends 也就是继承,子类继承父类的一些特性。在Django 模板中通过继承可以减少重复代码。 首先我们建立一个app,名字叫做 hello。别忘了在 sett

首先 extends 也就是继承,子类继承父类的一些特性。在Django 模板中通过继承可以减少重复代码。

首先我们建立一个app,名字叫做 hello。别忘了在 settings.py 中的 INSTALLED_APPS 注册这个app。不注册会出现 hello 目录下的 templates 中的模板无法调用。

1.在根目录下的 templates 创建 base.html
<!DOCTYPE html>
<html lang="en">
<head>
    <Meta charset="UTF-8">
    <title>{% block title %}{% endblock %}</title>
</head>
<body>
{% block content %}
{% endblock %}
</body>
</html>
 这里的 block 就是继承后要被替换的内容,其他的则与该模板相同.

2.在hello这个app中继承这个模板
在hello目录下新建templates目录,再在此目录下新建hello目录。hello目录中新建 hello.html。目录结构就像这样,理解一下django模板引用路径的规则

hello.html 内容如下

{% extends 'base.html' %}
{% block title %}{{ title }}{% endblock %}
{% block content %}{{ content }}{% endblock %}
 
首行代码就是先继承 base.html,也就是有了除了block的剩下内容。后面两个则是在为 block 填空,填入的内容是要传入的参数。这里分别是 title 和 content。这里可以看出模板语句是单个大括号加百分号,而模板变量是双大括号,没有百分号。

3.添加路由和方法
路由文件 urls.py 内容如下

from django.contrib import admin
from django.urls import path
from hello import views
urlpatterns = [
    path('hello/<str:title>/<str:content>/',views.hello),
    path('admin/', admin.site.urls),
]
 注意在路径中获取参数的方法,str还可以换为int。我觉得这种传参的方法比较简单,还有正则表达式的传参方法。

views.py

from django.shortcuts import render
# Create your views here.
def hello(request,title,content):
    context={'title':title,'content':content}
    return render(request,'hello/hello.html',context)
 
这里函数的形参名就是在路由中获取的参数名。通过传递参数会render给hello.html这个模板,而hello.html这个模板又会继承base.html这个父模板。

4.总结extends
通过 extends 可以减少代码重复。可以再增加header、footer等来包含共同的头部和底部内容。

include 要么放在 head 中,可以减少重复引入css或js,要么放在body中当一个共同的导航条,或者底部内容。

然而如果要在多处都 include 就不如直接用 extends 了。

 

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章