📜  扩展 – Django 模板标签

📅  最后修改于: 2022-05-13 01:55:31.961000             🧑  作者: Mango

扩展 – Django 模板标签

Django 模板是使用 Django 模板语言标记的文本文档或Python字符串。 Django 是一个强大的包含电池的框架,为在模板中呈现数据提供了便利。 Django 模板不仅允许将数据从视图传递到模板,而且还提供了一些有限的编程功能,例如变量、for 循环、注释、扩展等。
本文围绕如何在模板中使用扩展标签展开。 extends 标签用于继承 django 中的模板。需要一次又一次地重复相同的代码。使用扩展我们可以继承模板和变量。

句法:

{% extends 'template_name.html' %} 

例子:
假设以下目录结构:

dir1/
    template.html
    base2.html
    my/
        base3.html
base1.html

在 template.html 中,以下路径将是有效的:

html
{% extends "./base2.html" %}
{% extends "../base1.html" %}
{% extends "./my/base3.html" %}


Python3
# import Http Response from django
from django.shortcuts import render
 
# create a function
def geeks_view(request):
 
    # return response
    return render(request, "extendedgeeks.html")


Python3
from django.urls import path
 
# importing views from views.py
from .views import geeks_view
 
urlpatterns = [
    path('', geeks_view),
]


html

Main Template

  {% block content %} {% endblock %}


html
{% extends "geeks.html" %}
 
{% block content %}

GeeksForGeeks is the Best {% endblock %}



extends – Django 模板标签说明

使用示例说明如何在 Django 模板中使用扩展标签。考虑一个名为 geeksforgeeks 的项目,它有一个名为 geeks 的应用程序。

现在创建一个视图,我们将通过它访问模板,
在 geeks/views.py 中,

Python3

# import Http Response from django
from django.shortcuts import render
 
# create a function
def geeks_view(request):
 
    # return response
    return render(request, "extendedgeeks.html")

创建一个 url 路径以映射到此视图。在 geeks/urls.py 中,

Python3

from django.urls import path
 
# importing views from views.py
from .views import geeks_view
 
urlpatterns = [
    path('', geeks_view),
]

extends 总是与块标签一起使用,以便可以继承和覆盖。在 templates/geeks.html 中创建一个模板作为基本模板。

html

Main Template

  {% block content %} {% endblock %}

现在创建一个模板,它将使用 geeks.html 作为基本模板。创建一个新模板extendedgeeks.html,

html

{% extends "geeks.html" %}
 
{% block content %}

GeeksForGeeks is the Best {% endblock %}

让我们检查一下extendedgeeks.html 中的两个模板是否都显示了数据

扩展-django-templates-tags

高级用法

{% extends variable %} 使用变量的值。如果变量的计算结果为字符串,Django 将使用该字符串作为父模板的名称。如果变量的计算结果为 Template 对象,Django 将使用该对象作为父模板。