GVKun编程网logo

Eclipse中的Django模板语法突出显示(eclipse 语法提示)

8

如果您想了解Eclipse中的Django模板语法突出显示的相关知识,那么本文是一篇不可错过的文章,我们将对eclipse语法提示进行全面详尽的解释,并且为您提供关于4.Django模板语言和分页、D

如果您想了解Eclipse中的Django模板语法突出显示的相关知识,那么本文是一篇不可错过的文章,我们将对eclipse 语法提示进行全面详尽的解释,并且为您提供关于4.Django模板语言和分页、Django DTL模板语法中的循环、django模板语法、django模板语法之include的有价值的信息。

本文目录一览:

Eclipse中的Django模板语法突出显示(eclipse 语法提示)

Eclipse中的Django模板语法突出显示(eclipse 语法提示)

我使用Eclipse和pydev进行Django开发。这差不多行得通,包括调试。语法高亮似乎并非在所有地方都有效。我对模板的想法一无所获。有没有办法获取模板的突出显示和代码建议?

答案1

小编典典

最新的PyDev版本包含Django模板编辑器,但与香草Eclipse不兼容。您必须改为使用Aptana Studio。

只需使用http://pydev.org/nightly作为更新URL,PyDev和Django模板编辑器软件包就应该存在。

4.Django模板语言和分页

4.Django模板语言和分页

继承 extends

 子版只能继承一个父模板

1.父模板 master.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{% block title %} {% endblock %}</title>
    <link rel="stylesheet" href="/static/common.css">
    <style>
        .pg-header{
            height: 50px;
            background-color: red;
            color:blue
        }
        {% block css %} {% endblock %}
    </style>
</head>
<body>
    <div class="pg-header">小男孩管理</div>

    {% block content %} {% endblock %}

    <div class="pg-footer"></div>

    <script src="/static/jquery-1.12.4.js"></script>

    {% block js %} {% endblock %}
</body>
</html>

2.子版继承方法

{% extends ''master.html'' %}     #引用母版

{% block title %}用户管理{% endblock %}

{% block content %}
    <h1>用户管理</h1>
    <ul>
        {% for i in u %}
        <li>{{ i }}</li>
        {% endfor %}
    </ul>
{% endblock %}

{% block css %}
    <style>
        body{
            background-color: black;
        }
    </style>
{% endblock %}

{% block js %}
    <script>

    </script>
{% endblock %}

导入定制的组件 include

 创建tag.html

在index.html中导入tag.html,可以导入很多个

{% include ''tag.html'' %}

tag.html

form>
    <input type="text" name="user"/>
    <input type="submit" value="提交"/>
</form>

index.html

{# 指定继承的模板 #}
{% extends ''master.html'' %}
 
{# 指定替换的位置 #}
{% block title %}
    tp1
{% endblock %}
 
{# 指定替换的位置 #}
{% block content %}
    <p>tp1</p>
 
    {# 导入单独组件 #}
    {% include ''tag.html'' %}
{% endblock %}

simple_tag and filter

 1.django默认自带方法

{{ item.event_start|date:"Y-m-d H:i:s"}}    #日期格式进行转换
{{ bio|truncatewords:"30" }}                  #取字符串前30位
{{ my_list|first|upper }}                     #第一个字符大写             
{{ name|lower }}                                #所有字符小写

 2.simple_tag

第一步: 在app01下面创建templatetags(必须是这个名字)文件夹

第二步:在templatetags下面创建test1.py文件

第三步:模板中   首先在开头要先导入  {%  load test1 %} 

第四步: 模板中使用方法   {%  函数名 参数1  参数2  %}

test1.py

from django import template
from django.utils.safestring import mark_safe
# 必须是register对象
register = template.Library()

@register.simple_tag def func(a1,a2): return a1 + a2

index.py

{% load test1 %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    {{ name }}
    {{ name|lower }}

    {% func 2 5 %}
</body>
</html>

3.filter

test1.py

from django import template
from django.utils.safestring import mark_safe
# 必须是register对象
register = template.Library()

@register.simple_tag def func(a1,a2): return a1 + a2 @register.filter() def func1(b1,b2): return b1 + b2

index.py

{% load test1 %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    {{ name }}
    {{ name|lower }}

{#    simpletag#}
    {% func 2 5 %}

{#    filter#}
    {{ ''zhang''|func1:''derek'' }}


</body>
</html>

 总结:

simple:

优点:参数任意

缺点:不能作为if条件

filter

优点:最多两个参数

缺点:可以作为if条件

 分页

 1.简单分页

 涉及xss攻击,需要用到mark_safe方法,使用此方法字符串传输到后端后,已html形式显示,而非字符串

HTML文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .pagination .page{
            display: inline-block;
            padding: 5px;
            background-color: cyan;
            margin: 5px;
        }
        .pagination .page.active{
            background-color: brown;
            color: white;
        }
    </style>
</head>
<body>
    <ul>
        {% for item in li %}
            <li>{{ item }}</li>
        {% endfor %}
    </ul>
    <div class="pagination">
        {{ page_str }}
    </div>
</body>
</html>
user_list.html

views.py

from django.shortcuts import render,HttpResponse
from django.core.handlers.wsgi import WSGIRequest
from django.utils.safestring import mark_safe

LIST = []
for i in range(109):
    LIST.append(i)

from django.utils.safestring import  mark_safe
def user_list(request):
    current_page = request.GET.get(''p'',1)
    current_page = int(current_page)

    start = (current_page-1)*10
    end = current_page*10
    data = LIST[start:end]

    all_count = len(LIST)
    count,y = divmod(all_count,10)
    if y :
        count +=1

    page_list = []
    for i in range(1,count+1):
        if i == current_page:
            temp = ''<ahref="/user_list/?p=%s">%s</a>''%(i,i)
        else:
            temp = ''<ahref="/user_list/?p=%s">%s</a>''%(i,i)

        page_list.append(temp)

    page_str = mark_safe(''''.join(page_list))

    return render(request,''user_list.html'',{''li'':data,''page_str'':page_str})

浏览器访问地址

浏览器访问地址:http://127.0.0.1:8000/user_list/?p=3

2.增加功能

分页数进行定制,添加上一页、下一页,增加跳转功能,实现分页的完整功能

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .pagination .page{
            display: inline-block;
            padding: 5px;
            background-color: cyan;
            margin: 5px;
        }
        .pagination .page.active{
            background-color: brown;
            color: white;
        }
    </style>
</head>
<body>
    <ul>
        {% for item in li %}
            <li>{{ item }}</li>
        {% endfor %}
    </ul>
    <div class="pagination">
        {{ page_str }}
    </div>
</body>
</html>

user_list.html
user_list

views.py

LIST = []
for i in range(199):
    LIST.append(i)

from django.utils.safestring import  mark_safe
def user_list(request):
    current_page = request.GET.get(''p'',1)
    current_page = int(current_page)

    start = (current_page-1)*10
    end = current_page*10
    data = LIST[start:end]

    all_count = len(LIST)
    total_count,y = divmod(all_count,10)
    if y :
        total_count +=1
    pager_num = 11                          #页码数

    page_list = []
    if total_count < pager_num :            #总页面小于页码数
        start_index = 1
        end_index = total_count + 1
    else:
        if current_page <= pager_num/2:     #开头
            start_index = 1
            end_index = pager_num + 1
        elif current_page + (pager_num-1)/2 >= total_count:         #中间
            start_index = total_count - (pager_num-1)
            end_index = total_count + 1
        else:                               #结尾
            start_index = current_page - (pager_num-1)/2
            end_index = current_page + (pager_num-1)/2 + 1

    # 上下页码
    if current_page == 1:
        prev = ''<ahref="javascript:void(0)">上一页</a>''  # 什么都不干
    else:
        prev =  ''<ahref="/user_list/?p=%s">上一页</a>''%(current_page-1)
    page_list.append(prev)
    for i in range(int(start_index),int(end_index)):
        if i == current_page:
            temp = ''<ahref="/user_list/?p=%s">%s</a>''%(i,i)
        else:
            temp = ''<ahref="/user_list/?p=%s">%s</a>''%(i,i)

        page_list.append(temp)
    if current_page == total_count:
        nex = ''<ahref="javascript:void(0)">下一页</a>''  # 什么都不干
    else:
        nex = ''<ahref="/user_list/?p=%s">下一页</a>''%(current_page+1)
    page_list.append(nex)

    # 跳转 可以写到前端
    jump = ''''''
    <input type="text" /><a onclick="jumpTo(this,''/user_list/?p='');">GO</a>
    <script>
        function jumpTo(ths,base) {
            var val = ths.previousSibling.value;
            location.href = base + val;
        }
    </script>
    ''''''
    page_list.append(jump)

    page_str = mark_safe(''''.join(page_list))

    return render(request,''user_list.html'',{''li'':data,''page_str'':page_str})

3.优化完善

页码代码跟业务代码分开,创建class类,然后views导入进去

app01下面创建 utils文件夹,里面创建pagination.py

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .pagination .page{
            display: inline-block;
            padding: 5px;
            background-color: cyan;
            margin: 5px;
        }
        .pagination .page.active{
            background-color: brown;
            color: white;
        }
    </style>
</head>
<body>
    <ul>
        {% for item in li %}
            <li>{{ item }}</li>
        {% endfor %}
    </ul>
    <div class="pagination">
        {{ page_str }}
    </div>
</body>
</html>

user_list.html
user_list.html

views.py

LIST = []
for i in range(199):
    LIST.append(i)

class Page:
    def __init__(self, current_page, data_count, per_page_count=10, pager_num=7):
        self.current_page = current_page
        self.data_count = data_count
        self.per_page_count = per_page_count
        self.pager_num = pager_num

    @property
    def start(self):
        return (self.current_page - 1) * self.per_page_count

    @property
    def end(self):
        return self.current_page * self.per_page_count

    @property
    def total_count(self):
        v, y = divmod(self.data_count, self.per_page_count)
        if y:
            v += 1
        return v

    def page_str(self, base_url):
        page_list = []

        if self.total_count < self.pager_num:
            start_index = 1
            end_index = self.total_count + 1
        else:
            if self.current_page <= (self.pager_num + 1) / 2:
                start_index = 1
                end_index = self.pager_num + 1
            else:
                start_index = self.current_page - (self.pager_num - 1) / 2
                end_index = self.current_page + (self.pager_num + 1) / 2
                if (self.current_page + (self.pager_num - 1) / 2) > self.total_count:
                    end_index = self.total_count + 1
                    start_index = self.total_count - self.pager_num + 1

        if self.current_page == 1:
            prev = ''<ahref="javascript:void(0);">上一页</a>''
        else:
            prev = ''<ahref="%s?p=%s">上一页</a>'' % (base_url, self.current_page - 1,)
        page_list.append(prev)

        for i in range(int(start_index), int(end_index)):
            if i == self.current_page:
                temp = ''<ahref="%s?p=%s">%s</a>'' % (base_url, i, i)
            else:
                temp = ''<ahref="%s?p=%s">%s</a>'' % (base_url, i, i)
            page_list.append(temp)

        if self.current_page == self.total_count:
            nex = ''<ahref="javascript:void(0);">下一页</a>''
        else:
            nex = ''<ahref="%s?p=%s">下一页</a>'' % (base_url, self.current_page + 1,)
        page_list.append(nex)

        jump = """
        <input type=''text''  /><a onclick=''jumpTo(this, "%s?p=");''>GO</a>
        <script>
            function jumpTo(ths,base){
                var val = ths.previousSibling.value;
                location.href = base + val;
            }
        </script>
        """ % (base_url,)

        page_list.append(jump)

        page_str = mark_safe("".join(page_list))

        return page_str

from django.utils.safestring import  mark_safe
def user_list(request):
    current_page = request.GET.get(''p'', 1)
    current_page = int(current_page)
    page_obj = Page(current_page,len(LIST))

    data = LIST[page_obj.start:page_obj.end]

    page_str = page_obj.page_str("/user_list/")

    return render(request, ''user_list.html'', {''li'': data,''page_str'': page_str})

 

 
 
 

Django DTL模板语法中的循环

Django DTL模板语法中的循环

 1 from  django.shortcuts import render
 2 
 3 def index(request):
 4     context={
 5         ''books'':[
 6             ''5年高考3年模拟'',
 7             ''家猪养殖与配种'',
 8             ''Python 3 面向对象编程'',
 9             ''MySQL数据库从删库到跑路''
10         ],
11         ''person'':{
12             ''username'':''randomlee'',
13             ''age'':''25'',
14             ''height'':''180''
15         },
16         ''book2s'':[
17             {
18                 ''name'':''5年高考3年模拟'',
19                 ''author'':''黄冈中学'',
20                 ''price'':''32''
21             },
22             {
23                 ''name'':''家猪养殖与配种'',
24                 ''author'':''不知道'',
25                 ''price'':''40''
26             },{
27                 ''name'':''Python 3 面向对象编程'',
28                 ''author'':''a'',
29                 ''price'':''22''
30             },{
31                 ''name'':''MySQL数据库从删库到跑路'',
32                 ''author'':''abc'',
33                 ''price'':''33''
34             }
35         ],
36         ''comments'':[
37             '' 文章的评论内容''
38         ]
39     }
40     return render(request,''index.html'',context)
views.py
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7     body {
 8         text-align: center;
 9         background: pink;
10         {#line-height: 100px;#}
11     }
12     td{
13         border: 1px solid;
14         padding: 10px;
15 
16     }
17     table{
18         text-align: center;
19     }
20     </style>
21 
22 </head>
23 <body>
24 <ul>
25 
26 {% for book in books reversed %}
27     <li>{{ book }}</li>
28 {% endfor %}
29 </ul>
30 <ul>
31 {% for v in person.values %}
32     <li>{{ v }}</li>
33 {% endfor %}
34 {% for k in person.keys %}
35     <li>{{ k }}</li>
36 {% endfor %}
37 {% for k,v in person.items %}
38     <li>{{ k }}/{{ v }}</li>
39 {% endfor %}
40 
41 </ul>
42 
43 <table>
44     <thead>
45     <tr>
46         <td>从1开始序号</td>
47         <td>从0开始序号</td>
48         <td>反转序号最后一位是1</td>
49         <td>反转序号最后一位是0</td>
50         <td>书名</td>
51         <td>作者</td>
52         <td>价格</td>
53     </tr>
54     </thead>
55     <tbody>
56 
57         {% for book2 in book2s %}
58             {% if forloop.first %}
59 {#              是否是遍历的第一行  #}
60                 <tr style="background: red" >
61             {% elif forloop.last %}
62 {#                是否遍历的最后一行#}
63                 <tr style="background: blue">
64                 {% else %}
65                 <tr>
66             {% endif %}
67             <td>{{ forloop.counter }}</td>
68             <td>{{ forloop.counter0 }}</td>
69             <td>{{ forloop.revcounter }}</td>
70             <td>{{ forloop.revcounter0 }}</td>
71             <td>{{ book2.name }}</td>
72             <td>{{ book2.author }}</td>
73             <td>{{ book2.price }}</td>
74             </tr>
75         {% endfor %}
76 
77 
78     </tbody>
79 </table>
80 
81 <ul>
82     {% for comment in comments %}
83         <li>{{ comment }}</li>
84     {% empty %}
85         <li>没有任何评论</li>
86     {% endfor %}
87 
88 </ul>
89 
90 </body>
91 </html>
index.html

template_for_demo.zip 

django模板语法

django模板语法

Django 模板语法

Django 模板语法

一、模板

只要是在html里面有模板语法就不是html文件了,这样的文件就叫做模板。

二、模板语法

模板语法变量:{{ }}
在Django模板中遍历复杂数据结构的关键是句点字符 .(其实就是点号)
views.py

from django.shortcuts import render


def index(request): name = "Hello world!" number = 101 lst = [1, 2, 3, 4, 5] dic = {"name": "eric", "job": "teacher"} class People: def __init__(self, name, age): self.name = name self.age = age def __str__(self): return self.name + str(self.age) def dream(self): return "你有梦想吗?" # 实例化 person_jack = People("jack", 10) person_pony = People("pony", 36) person_cent = People("cent", 55) person_list = [person_jack, person_pony, person_cent] return render(request, "index.html", { "name": name, "num": number, "lst": lst, "dic": dic, # 键对应的是模板里的名字,值对应的是上面定义的值 "person_jack": person_jack, "person_pony": person_pony, "person_list": person_list } )

templates/index.html

<!DOCTYPE html>
<html lang="en"> <head> <meta charset="UTF-8"> <title>Django 模板</title> </head> <body> <h3>变量{{ variable }}:深度查询</h3> <h5>{{ name }}</h5> <p>{{ num }}</p> <p>{{ lst }}</p> <p>{{ dic }}</p> <p>{{ lst.0 }}</p> <p>{{ lst.4 }}</p> <p>{{ dic.name }}</p> <p>{{ dic.job}}</p> <p>{{ person_jack.name }}</p> <p>{{ person_jack.age }}</p> <p>{{ person_list.2.name }}</p> </body> </html>

运行输出结果如下图所示:

注意:在使用templates时,需要在django项目的settings配置文件中对templates的路径做如下配:

TEMPLATES = [
    {
        ''BACKEND'': ''django.template.backends.django.DjangoTemplates'',
        # os.path.join(BASE_DIR, "templates"),启用django模板; # 如果没有这句会出现"django.template.exceptions.TemplateDoesNotExist: index.html"错误 ''DIRS'': [os.path.join(BASE_DIR, "templates")], ''APP_DIRS'': True, ''OPTIONS'': { ''context_processors'': [ ''django.template.context_processors.debug'', ''django.template.context_processors.request'', ''django.contrib.auth.context_processors.auth'', ''django.contrib.messages.context_processors.messages'', ], }, }, ]

其中,局点符也可以用来引用对象的方法(无参数方法)

<h4>字典:{{ dic.name.upper }}</h4>

模板语法标签:{% tag %}
标签语法是:{% tag %},它比变量更加复杂:一些在输出中创建文本,一些通过循环或者逻辑来控制流程,一些加载其后的变量将使用道德额外信息到模板中。一些标签需要开始和结束标签(例如:{% tag %}... 标签内容...{% endtag %})。
1.for标签(循环序号可以通过{{ forloop }}显示)

<!DOCTYPE html>
<html lang="en"> <head> <meta charset="UTF-8"> <title>Django 模板</title> </head> <body> <h3>循环取值</h3><hr> {% for item in person_list %} <p>{{ item.name }}, {{ item.age }}</p> {% endfor %} <h3>循环取值:倒序</h3> {% for item in person_list reversed %} {# 序号从1开始 #} <p>{{ forloop.counter }}---------->{{ item.name }}, {{ item.age }}</p> {# 序号从0开始 #} <p>{{ forloop.counter0 }}---------->{{ item.name }}, {{ item.age }}</p> {# 序号倒序 #} <p>{{ forloop.revcounter }}---------->{{ item.name }}, {{ item.age }}</p> {% endfor %} <h3>循环取值:字典</h3> {% for key, value in dic.items %} <p>{{ key }}, {{ value }}</p> {% endfor %} </body> </html>

运行结果如下图所示:

2.for ... empty:for标签带有一个可选的{% empty %}从句,以便再给出的组是空的或者没有被找到时,可以有所操作

{% for person in person_list %} <p>{{ person.name }}</p> {% empty %} <p>sorry,no this person</p> {% endfor %}

3.if标签:{% if %}会对一个变量求值,如果它的值是"True"(存在、不为空且不是boolean类型的false值),对应的内容块被执行

<!DOCTYPE html>
<html lang="en"> <head> <meta charset="UTF-8"> <title>Django 模板</title> </head> <body> {% if num > 200 %} <p>大于</p> {% elif num == 200 %} <p>等于</p> {% else %} <p>小于</p> {% endif %} </body> </html>

4.with:使用一个简单的名字还出一个复杂的变量,当我们需要一个"昂贵的"方法(比如:访问数据库)很多次的时候是非常有用的

{% with total=business.emlpoyees.count %} {{ total }} empolyee {{ total | pluralize }} % endwith %}
<p>{{ person_list.2.name }}</p> {% with name=person_list.2.name %} <p>{{ name }}</p> {% endwith %}

5.csrf_token:跨站点请求伪造保护
提交数据的时候会做安全机制,当用户点击提交的时候会出现一个forbidden错误,就是用settings配置里面的csrf做的安全机制,如果我们不需要使用,可以将其注释。或者在form表单下面添加{% csrf_token %}来解决该问题(这才是真正的解决办法,注释不是解决办法)。

<h3>scrf_token</h3> <form action="/tag/" method="post"> {% csrf_token %} <p><input type="text" name="haiyan"></p> <input type="submit"> </form>

模板语法过滤器:{{ obj|filter__name:param }},过滤器使用管道字符

1.default:{{ variable| default: "nothing"}},如果变量是false或者为空,使用默认值。否则,使用变量的值

<p>default过滤器:{{ li|default:"如果显示为空,设置解释性的内容。" }}</p>

2.length:返回值的长度,它对字符串和列表都起作用

{{ value | length }}        # 如果value是["a", "b", "c", "d"],那么输出是4

3.filesizeformat:将值格式化为"人类可读"的文件尺寸(例如:13KB,4.1M,102bytes等等)

{{ value | filesizeformat }}        # 如果value是123456789,输出将会是117.7MB

4.date:格式化日期时间格式

{{ value | date:"Y-m-d" }}        # 如果value=datetime.datetime.now(),返回时间的年-月-日格式

5.slice:切片

{{ value | slice:"2:-1" }}        # 如果value="hello world",返回''llo worl''

6.truncatechars:截断
如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(...)结尾,参数:要截断的字符数。

<p>截断字符: {{ content | truncatechars:20 }}</p> <p>截断单词: {{ content | truncatewords:4 }}</p>

如果content是"i am is jack, where are you come from?"
输出结果:截断字符: i am is jack, whe...;截断单词i am is jack, where...

7.safe
django的模板中会对HTML标签和JS语法标签进行自动转义,这样是为了安全。但是有的时候我们不想这些HTML元素被转义,比如我们做一个内容管理系统,后台添加的文章是经过修饰的,这些修饰可能是通过类似于FCKeditor编辑加注了HTML修饰符的文本,如果自动转义的话显示的就是保护HTML标签的源文件。为了在django中关闭HTML自动转义有两种方式,如果是一个单独的变量我们可以通过过滤器"|safe"的方式告诉django这段代码是安全的不必转义,如下:

value="<a href="">点击</a>""

{{ value | safe }}
<p>{{ label }}</p>        # 为了安全,系统会把标签变成字符串
<p>{{ label | safe }}</p> # 加上safe,确定数据时安全的才能被当成是标签

django模板语法之include

django模板语法之include

假如我们有以下模板index.html,代码为:

Meta Title

<span><<span>div<span>>网页公共头部部分<span></<span>div<span>>

<span><<span>h2<span>> 网页body部分 <span></<span>h2<span>>

<span><<span>div<span>>网页公共底部部分<span></<span>div<span>>

<span></<span>body<span>>
<span></<span>html<span>>

做过web开发的童鞋知道大部分网页的公共头部,公共底部部分代码每个页面都一样,那么就应该将其单独拿出做为一个html, 这样修改这部分代码时候,不需要每个页面都修改, 所以在django中我们可以这么做:

top.html

网页公共头部部分

bottom.html

网页公共底部部分

index.html

Meta Title {% include 'top.html' %}

<span><<span>h2<span>> 网页body部分 <span></<span>h2<span>><span>

{% include 'bottom.html' %}

<span></<span>body<span>>
<span></<span>html<span>>

我们可以使用django模板引擎的Include语法,来将单独的页面包含到当前模板页面中。有同学有疑问,那我们通过视图传递给模板的上下文,在被包含的模板中可以使用吗?可以直接使用。

假如我们有如下视图:

render(request,,{: 100,: 200})

该django的视图函数,传递给模板并渲染模板。

top.html修改如下:

网页公共头部部分:{{ a }}

这么使用是没有问题的。

我这里有这样的一个问题,假如所有的页面都使用共同的头部top.html, 可能针对1.html 2.html 3.html所使用的头部有些样式不一样,所需top.html:

网页公共头部部分

但是对于5.html, 6.html使用的头部样式为:

网页公共头部部分

很显然,如果直接通过include方式包含公共头部,会导致一些页面显示问题。既然部分参数不一样,include允许我们传递参数给被include的模板,我们可以使用with语法,那么问题解决如下:

{{ % include 'top.html' with mycss='acss' % }}

top.html可修改如下:

网页公共头部部分

被包含模板中部分参数,由我们include的时候动态指定,那么top.html就不会因为细微差别而编写多份代码了。

关于Eclipse中的Django模板语法突出显示eclipse 语法提示的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于4.Django模板语言和分页、Django DTL模板语法中的循环、django模板语法、django模板语法之include等相关知识的信息别忘了在本站进行查找喔。

本文标签: