django - 模板(templates)和 使用

【python】Django——templates模板、静态文件、django模板语法、请求和响应 笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~【Django专栏】 阅读详情

Django - templates(模板)


1. 简介

templates 的中文意思就是模板, 在django项目中该文件夹下是专门存放html文件的, 每一个html文件就是一个模板。模板是用来显示网页用的,在views.py文件中我们可以定义使用模板的方法。下面就来写一些干货。


2. 模板中循环、条件判断、常用标签、过滤器的使用

循环: 迭代显示列表、字典等中的内容
条件判断:判断是否显示该内容
标签:for, if这样的功能都是标签
过滤器: 管道后面的功能。,比如{{var|length}},求变量长度的length就是一个过滤器

  1. 字符串传入模板:

        def home(request):
        string = "我在学习Django"
        return render(request, 'home.html', {'string': string})
    
    
        在模板中这样使用方式:
    
        {{ string }}
    
  2. for循环和list:

    def home(request):
        TutorialList = ["HTML", "CSS", "jQuery", "Python", "Django"]
        return render(request, 'home.html', {'TutorialList': TutorialList})
    
    
     在模板中使用方式:
    
        {% for i in TutorialList %}
            {{ i }}
        {% endfor %}
    
  3. 字典传入模板:

    def home(request):
        info_dict = {'site': '自强学堂', 'content': '各种IT技术教程'}
        return render(request, 'home.html', {'info_dict': info_dict})
    
    在模板中使用使用:
    
        {{ info_dict.site }}
        {{ info_dict.content }}
    
    在模板中取字典的键是用点info_dict.site,而不是
    Python中的 info_dict['site']
    
    遍历字典:
    
        {% for key, value in info_dict.items %}
        {{ key }}: {{ value }}
        {% endfor %}
    
  4. 条件判断和for循环的详细操作:

    def home(request):
    List = map(str, range(100))# 一个长度为100的 List
    
    假如我们想用逗号将这些元素连接起来:
    
        {% for item in List %}
            {{ item }}, 
        {% endfor %}
    
    但是最后一个元素后面也有一个逗号,这样肯定不爽,
    如果判断是不是遍历到了最后一个元素了呢?
    
    用变量 forloop.last 这个变量,如果是最后一项其为真,否则为假,更改如下:
    
        {% for item in List %}
            {{ item }}
            {% if not forloop.last %}
                ,
            {% endif %} 
        {% endfor %}
    
    在for循环中还有很多有用的东西,如下:
    
        forloop.counter 索引从 1 开始算
        forloop.counter0    索引从 0 开始算
        forloop.revcounter  索引从最大长度到 1
        forloop.revcounter0 索引从最大长度到 0
        forloop.first   当遍历的元素为第一项时为真
        forloop.last    当遍历的元素为最后一项时为真
        forloop.parentloop  用在嵌套的 for 循环中,获取上一层 for 
        循环的 forloop
    
        当列表中可能有个元素为空值时用 for  empty
    
            <ul>
            {% for athlete in athlete_list %}
                <li>{{ athlete.name }}</li>
            {% empty %}
                <li>抱歉,列表为空</li>
            {% endfor %}
            </ul>
    
  5. 模板上得到对应视图的网址:

    # views.py
    def add(request, a, b):
        c = int(a) + int(b)
        return HttpResponse(str(c))
    
    
    # urls.py
    urlpatterns = patterns('',
        url(r'^add/(\d+)/(\d+)/$', 'app.views.add', name='add'),
    )
    
    
    # template html
    {% url 'add' 4 5 %}
    
    这样网址上就会显示出:/add/4/5/ 这个网址,假如我们以后
    修改 urls.py 中的 :
    
        r'^add/(\d+)/(\d+)/$'
        这一部分,改成另的,比如:
    
        r'^jiafa/(\d+)/(\d+)/$'
        这样,我们不需要再次修改模板,当再次访问的时候,
        网址会自动变成 /jiafa/4/5/
    
    
    还可以使用 as 语句将内容取别名(相当于定义一个变量),
    多次使用(但视图名称到网址转换只进行了一次)
    
        {% url 'some-url-name' arg arg2 as the_url %}
    
        <a href="{{ the_url }}">链接到:{{ the_url }}</a>
    
  6. 模板中的逻辑操作:

    ==, !=, >=, <=, >, < 这些比较都可以在模板中使用,比如:
    
    
        {% if var >= 90 %}
        成绩优秀,自强学堂你没少去吧!学得不错
        {% elif var >= 80 %}
        成绩良好
        {% elif var >= 70 %}
        成绩一般
        {% elif var >= 60 %}
        需要努力
        {% else %}
        不及格啊,大哥!多去自强学堂学习啊!
        {% endif %}
    
    比较符号前后必须有至少一个空格!)
    
    and, or, not, in, not in 也可以在模板中使用:
    
        假如我们判断 num 是不是在 0 到 100 之间:
    
        {% if num <= 100 and num >= 0 %}
            num在0到100之间
        {% else %}
            数值不在范围之内!
        {% endif %}
            假如我们判断 'ziqiangxuetang' 在不在一个列表变量 List 中:
    
        {% if 'ziqiangxuetang' in List %}
        自强学堂在名单中
        {% endif %}
    
  7. 模板中 获取当前网址,当前用户等:

    修改 settings.py 
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [],
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    ...
                    'django.template.context_processors.request',
                    ...
                ],
            },
        },
    ]   
    
    然后在 模板中我们就可以用 request 了
    
    
    获取当前用户:
    
        {{ request.user }}
    
    如果登陆就显示内容,不登陆就不显示内容:
    
        {% if request.user.is_authenticated %}
            {{ request.user.username }},您好!
        {% else %}
            请登陆,这里放登陆链接
        {% endif %}
    
    获取当前网址:
    
        {{ request.path }}
    
    获取当前 GET 参数:
    
        {{ request.GET.urlencode }}
    
    合并到一起用的一个例子:
    
        <a href="{{ request.path }}?{{ request.GET.urlencode }}
        &delete=1">当前网址加参数 delete</a>
    我们可以判断 delete 参数是不是 1 来删除当前的页面内容。
    

    简单总结下:一般变量之类的用{{}}(变量),功能类的, 比如循环,条件判断使用{% %}(标签)

  8. 过滤器

    1. date

      年: y  两位年  Y 四位年
      月: m
      日: d
      
      时:h 12小时制  H 24小时制
      分:m
      秒:s
      
    2. 注释

      {#  #}      模板中单行注释
      
      {% comment %}  {% endcomment %}   模板中多行注释
      
    3. 大小写

      upper  lower
      
    4. 乘或者除

      widthratio 数 分母  分子
      
    5. 整除2,返回True,反之False

      divisibleby:2
      
    6. namespace和name使用

      {% url 'namespace:name' value1 %}
      工程url中定义namespace
      模块appurl中定义name
      

3. include(包含)和 extends(拓展或者继承)


网站模板的设计,一般都会有一些通用的部分,像导航,底部,访问统计代码等。

nav.html, bottom.html, tongji.html

  • 包含(include):

    base.html包含 nav.html, bottom.html, tongji.html

  • 继承(extends):

    nav.html, bottom.html, tongji.html 继承 base.html

    挖坑:

    base.html:
    <!DOCTYPE html>
    <html>
    <head>
    <title>{% block title %}默认标题{% endblock %}</title>
    </head>
    <body>
    
    {% include 'nav.html' %}
    
    {% block content %}
    <div>这里是默认内容,所有继承自这个模板的,如果不覆盖
    就显示这里的默认内容。</div>
    
    {% endblock %}
    
    {% include 'bottom.html' %}
    
    {% include 'tongji.html' %}
    
    </body>
    </html>
    

    填坑:

    nav.html:
    把原有的html格式删除,然后内容为  
    
    {% block title %}
        文本内容
    {% endblock %}
    
    {% block contains %}
        文本内容
    {% endblock %}
    

    包含与继承(extends):形式刚好相反

    Django 模板查找机制: Django 查找模板的过程是在每个 app 的 templates 文件夹中找(而不只是当前 app 中的代码只在当前的 app 的 templates 文件夹中找)。各个 app 的 templates 形成一个文件夹列表,Django 遍历这个列表,一个个文件夹进行查找,当在某一个文件夹找到的时候就停止

django之六--模板templates 一、前言 首先,我们要知道html是一门静态语言,里面没法传一些动态参数,也就是一个写死的html页面。 那么,如果我们想实现在一个html页面里传入不同的参数对应的参数值,这就可以用django框架提供的模板传参功能来解决。 二、模板传参 1、先在hello应用下或者【helloworld/hello/】下新建一个templates文件夹,具体层级目录如下。 2、在【helloworld/hello/templates】下新建一个【leiyuxing.html】,【leiyuxing.htm 阅读详情

相关推荐

从零到一:AVL Cruise与Matlab联合仿真DLL配置的避坑指南

本文详细介绍了AVL Cruise与Matlab联合仿真DLL配置的全流程,包括编译器选择、环境变量设置、DLL编译与模型导出等关键步骤。针对常见问题如版本匹配、路径错误等提供了实用解决方案,帮助工程师高效实现控制策略与整车性能仿真的无缝对接。

weixin_29054399的博客 567

Django——模板Templates

官网网址:https://docs.djangoproject.com/en/3.1/topics/templates/ 目录Templates(模板)The Django template language语法1、Variables变量2、Tags标签3、Filters滤波器 Templates(模板) 作为一个前端框架,Django需要一种便捷的方法去动态生成HTML。最常用的方法就是templates。一个templates包含html的静态部分一级动态内容插入的特定方法。具体可参考官网教程3 一个D

weixin_43128028的博客 1371

Ubuntu20.04 高效安装企业微信的完整指南

本文提供了在Ubuntu20.04系统上高效安装企业微信的完整指南,详细介绍了通过Deepin-wine环境运行Windows版企业微信的步骤和优化技巧。内容包括系统环境检查、依赖安装、企业微信包的获取与安装、首次运行配置及常见问题解决方案,帮助开发者在Ubuntu系统中流畅使用企业微信进行办公通讯。

weixin_42568801的博客 353

Django中模板文件夹templates的定义与使用

图1 测试的时候如果出现以上错误“TemplateDoesNotExist at /t1/”这个是因为默认情况下,Django会在每个应用的根目录下查找名为"templates"的文件夹在Django中,也可以使用自定义的模板文件夹名字,但是需要在项目中重新设置中模板的配置。settings.py中 找到TEMPLATES设置中,可以根据需要设置应用app的模板文件夹的名称和路径。上述配置中,指定了应用下模板文件夹的路径。

qq_28938301的博客 5229

UE5 Mass交通规则设计指南:从Stop Sign到智能红绿灯的进阶配置

本文详细解析了UE5 Mass框架下的交通规则设计,从基础Stop Sign到智能红绿灯的进阶配置。通过UMassTrafficIntersectionSpawnDataGenerator等核心组件,实现动态响应、自然流畅的交通行为系统,提升虚拟城市的真实感与游戏性。

weixin_30500105的博客 502

[PayPal报错]为遵守国际法规,这笔交易已被拒绝。

PayPal报错解决:为遵守国际法规,这笔交易已被拒绝。

qq_39906413的博客 1万+

Django 教程之Templates模板

文章目录配置static目录重写url配置目录配置templates目录模板语言{{ 变量 }}{% 标签 %}分析编写模板逻辑视图View路由URLbase.htmlindex.html自定义标签和过滤器说明 创建模板常用的方法: 每个APP各自创建自己的模板 统一放到项目同名的APP中,即blog 我一般喜欢各种解耦,就是为了出现问题好解决,只需处理出问题的地方就好,所以考虑到后期会使用多个模板,简单说就是博客会有多个主题,将HTML页面的设计和后端逻辑设计分离,前后端分离,后台不变,前台随意变更展

Johnny's Lab 3258

PID参数自整定实战解析:从继电反馈到智能调节的完整实现

本文深入解析PID参数自整定的实战应用,从继电反馈原理到智能调节算法的完整实现。通过详细讲解振荡波形特征提取、参数计算的工程化改进及工业场景调试技巧,帮助工程师快速掌握PID自整定技术,提升控制系统性能。特别针对嵌入式系统优化和噪声环境下的稳定策略提供了实用解决方案。

weixin_28731223的博客 461

Django学习笔记五:templates使用详解

你可以创建自己的过滤器,并在模板中使用它们。# 在应用的模板tags目录中创建一个自定义过滤器你可以创建自定义标签和过滤器,并在模板中使用它们。

软件行业技术文化交流。 1037

threejs中使用Reflector实现出倒影效果,并实现背景透明的效果(Reflector镜面背景透明, 倒影弱化)

在项目中遇到要实现倒影效果,threejs给我们提供了Reflector,可以轻松完成镜面效果,实现倒影。但背景不透明;并且反射出的倒影太亮了;网上没搜到解决方案, 自己修改了下源码实现了想要的效果,做个记录...

weixin_40856652的博客 5721

国产FPGA高云GW1NSR-4C,集成ARM Cortex-M3硬核

从板子整体角度来看,这是一款国产化程度很高的板子,从主控FPGA,到JTAG芯片,存储芯片、电源芯片等,都是使用的国产半导体公司的产品。板子整体尺寸也比较迷你,属于小而美类型的,可以认为是一款FPGA核心板,当然也预留了排针接口,给用户足够的扩展空间。对于想了解高云小蜜蜂SoC软硬件开发,以及对云源软件、MCU开发环境做个深度评测来说足够了。JTAG调试器固件可以增加虚拟串口功能,对于板子本来来说面积不会有改动,只需要添加两根信号线即可。

whik1194的博客 6397

Django 模板配置 TEMPLATES

TEMPLATES 选项配置模板引擎相关信息 TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': { # ... ...

王若米的专栏 1622

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Django-模板Templates

搭建Django框架 django-admin startproject 项目名 目录结构: manage.py 包含若干子命令: runserver startapp 主文件夹 - 与项目同名 init.py wsgi.py urls.py 主路由配置文件 settings.py 主配置文件 1.BASE_DIR 2.DEBUG 3.ALLOWED_HOSTS 4.INSTALLED_...

weixin_44119390的博客 1119

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

django项目下模板(templates)的配置和App下模板的配置

一.django项目下的模板(templates)注册方法 1.如果templates在整个项目下,不是在某个App目录里,这说明templates是项目下的templates,这个时候如果想要调用模板中的页面需要在setings中注册一下 就是在setings->TEMPLATES->DIRS中添加一下路径:os.path.join(BASE_DIR,‘templates’) 注意:...

pyword的博客 3864

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Django框架与Templates模板及语法

这样写Django会默认去static这个目录下去寻找对应的路径文件,这样写的好处是:如果在之后项目上线,我们想要把这个静态文件移到别的地方去,文件名出现了变动,而之前的绝对路径的写法则同样需要做出改动,过于麻烦;而现在这种写法我们只需要更改settings.py文件下的配置信息,其余路径信息就会自动做出相应的改动。在Django中会默认去APP下的templates目录下去寻找 html 文件,并且会更具app的注册顺序,逐一去templates目录中去寻找它们相对应的文件。中间部分是需要执行的代码块。

minifagun的博客 897

模板转义_Django:Templates 模板

“templates 模板,用于在浏览器显示的部分,Django有一套前端的语法规则,组合起来就是所谓的 前端。需要了解一点的前端知识,本示例以用户登录为例,前端部分不做多讲。”与 views交互,然后在前端页面呈现views通过 return render(request, '.html', {}) 中最后的字典形式将数据传送给templates中由于在配置篇中配置了 static...

weixin_36435766的博客 121

Django在project下的app目录下添加模板文件templates详细说!

1、在根目录下创建一个目录my_templates,用于存放模板文件 2、在其中创建一个模板文件 例如,创建一个首页,命名为index.py 3、渲染模板 回顾视图函数的作用 def 函数(request): #1、接收数据 #2、处理数据 #3、合成响应正文 #4、返回response对象 4、模板的路径查找问题 TemplateDoesNotExist 在配置文件setting...

sun9979的博客 1954

Django 模板(templates)

作为一个Web框架,Django需要一种动态生成HTML的便捷方法,用于快速生成页面返回给客户端。最常用的方法依赖于模板。模板包含所需HTML输出的静态部分以及描述动态内容将被插入的一些特殊语法。

Linxiaokang_1212的博客 626

Django模板路径设置:templates,TEMPLATE_DIRS,TEMPLATES

django版本:1.9.5 首先设置将templates放在和manage.py同一目录下,然后templates下是模板文件。 然后要设置settings.py:注意修改标黄处。 TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'D...

weixin_30528371的博客 2377

Django之templates模板

模板的使用 1.如何使用模板 在manage.py的同级文件夹中创建templates 在setting.py的文件中把第58行'DIRS': [ ],改成'DIRS': [os.path.join(BASE_DIR,'templates')], 知识点: os.path.join(BASE_DIR,'templates') 拼接两个字符串 BASE_DIR找到项目根目录127.0.0.1:80...

秋叶夏风的博客 841

Django模板验证终极指南:validate_templates命令确保模板零错误

在Django开发中,模板错误常常是项目部署时的"隐藏问题"😱。django-extensions提供的**validate_templates命令**就是你的终极解决方案,它能自动检测所有模板的语法和编译错误,确保项目稳定运行。 ## 🤔 为什么需要模板验证? 想象一下这样的场景:你的Django项目在本地测试一切正常,但部署到生产环境后突然出现500错误。经过排查发现,原来是一个小小的

gitblog_00015的博客 470

【Django】 templates模板与static静态文件

在app01(你创建的app名称)文件夹下,创建templates文件夹,其中存放想要返回的html文件对应关系如下除了上面的方式,还可以在项目根目录下创建templates文件夹,这时需要在settings.py文件中增加一行代码(如红框所示)查找逻辑:(1)Django 会在项目根目录下的templates目录中查找模板文件。(2)如果未找到,再查找每个app的 templates 目录(前提是 APP_DIRS 为 True)。运行结果。

m0_65788436的博客 898

templates是什么意思_django模板引擎是什么意思

什么是Templates(模板引擎)简单来说,Django的模板引擎就是HTML文件,只是包含使用了一种特殊的模板语言(Django模板语言 Django Template Language),简称DTL。如何加载第三方模板引擎优秀的模板引擎远远不止这么一个,所以Django是支持开发者对其进行扩展/修改的,我们完全可以通过在settings.py配置文件中,修改TEMPLATES中的BACKEN...

weixin_42311046的博客 559

Python Django模板templates渲染及配置

学亮编程手记 642

Django模板 Templates

什么是模板 模板是可以根据字典数据动态变化的html网页 模板可以根据视图中传递的字典数据动态生成相应的HTML网页。 模板的配置 创建模板文件夹<项目名>/templates 在 settings.py 中有一个 TEMPLATES 变量 BACKEND : 指定模板的引擎 DIRS : 模板的搜索目录(可以是一个或多个) APP_DIRS : 是否要在应用中的 templ...

**kwargs的博客 201
上一篇: git -- 工作区、暂存区、版本库
下一篇: Django - urls.py 和 views.py相关内容
Shanyt_
博客等级 码龄9年 122粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值