Djando模板

Djando模板

在上一章节中,我们使用django.http.HttpResponse()来输出”Hello World!”,实际上并没有遵守MVT模式。

下面针对上面的程序做一个修改,使其符合MVT模式。

  1. 在test_django工程目录,创建一个templates目录,这个目录用于存放模板。

  2. 在templates目录创建一个hello.html文件

    整个目录结构如:

    image

    hello.html文件代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        {{abc}} # 这个是django用于占位的,具体看下文
    </body>
    </html>
  3. 在test_django目录下的settings.py文件中,修改TEMPLATES中的DIR为[BASE_DIR+”/templates”],如下所示:


TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [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',
            ],
        },
    },
]
  1. 修改view.py中的显示
from django.shortcuts import render


def hello(request):
    context = {}
    context['abc'] = 'abc占位的内容:一行白鹭上青天'     # 这里abc,赋值的内容,就会替代hello.html文件中的{{abc}}
    # 这里context不要写成这样:
    # context = {'abc':'abc占位的内容:一行白鹭上青天'},这样写,context是set类型
    return render(request=request, template_name='hello.html', context=context)
  1. 启动服务后,在浏览器输入:127.0.0.1:8000,如图:

image


Django模板标签
  1. if/else标签
{% if condition %}
    ...
{% endif %}


或者

{% if condition1 %}
    ...
{% elif condition2 %}
    ...
{% else %}
    ...
{% endif %}
  1. for标签
# 正序迭代
{% for item in list %}
    ...
{% endfor %}

eg:
<ul>
    {% for item in list %}
        <ul>{{item}}
    {% endfor %}
</ul>


# 反向迭代
{% for item in list reversed %}
    ...
{% endfor %}
  1. ifequal/ifnotequal
ifequal:如果相等

ifnotequal:如果不相等


# 比较a,b两个变量
{% ifequal a b %}   
    ...
{% endifequal %}

或者

{% ifequal a b %}
    ...
{% else %}
    ...
{% endifequal %}
  1. 注释标签
{# 注释内容 #}
  1. 过滤器

模板过滤器可以在变量被显示前修改它,过滤器使用管道字符,如下所示:

{{ name | lower }}  # {{name}}变量被过滤器lower处理后,文档大写转成小写。

{{ name | first | upper }}  # {{name}}的首字母转成大写

{{name | truncatewords:"5"}}   # 显示{{name}}变量的前5个字符

除此之外还有addslashes,data,length过滤器
  1. include标签

include标签允许在模板中包含其他的模板的内容。

{{% include "nav.html" %}}  包含nav.html
  1. 模板的继承

    模板可以使用继承的方式来实现复用。

    1.接下来在templates目录创建一个base.html文件,文件内
    容如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <h2>{% block title %}标题{% endblock %}</h2>
    
        <h4>{% block author %} 作者 {% endblock %}</h4>
    
        {% block mainbody %}<p>段落</p>{% endblock %}
    </body>
    </html>

    2.创建一个article.html文件

    {% extends "base.html" %}   # 表示继承base.html
    
    {% block title %}   # 替换base.html中的占位内容,下同
        背景
    {% endblock %}
    
    {% block author %}
        朱自清
    {% endblock %}
    
    {% block mainbody %}
        我与父亲不相见已二年余了,我最不能忘记的是他的背影。
    {% endblock %}

    3.修改view.py的显示

    from django.shortcuts import render
    
    
    def hello(request):
        return render(request=request, template_name='article.html')
    

    4.启动服务,浏览器输入127.0.0.1:8000,显示如下:

    image

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值