django-基础三(模板templates)

一、模板配置

①、在项目中创建tempaltes文件夹,里面可以存放页面文件
②、在setting配置文件中找到TEMPLATES,DIRS:os.path.join(BASE_DIR, ‘templates’)意思是在根目录的templates中寻找html文件。
③、APP_DIRS:True表示若主tempates文件夹中未找到需要的html,则去app中的文件夹找,但是此app需要在INSTALLED_APPS中注册
④、若html文件都未找到,则抛出一个TemplateDoesNotExist的异常

二、数据渲染

将后台中的内容渲染到网页

在这里插入图片描述

①、列表元组直接可以通过下标读取
②、字典可以通过k来读取对应的值

三、标签符号(if、for、url链接)

1、if&for标签
在这里插入图片描述

注意点:
①、for循环可以使用reverse。{% for book in books reversed %} 进行反向遍历
②、for中提供了一些方法

项次 方法 说明
1 forloop.counter 当前循环的下标。以1作为起始值。
2 forloop.counter0 当前循环的下标。以0作为起始值。
3 forloop.revcounter 当前循环的反向下标值。比如列表有5个元素,那么第一次遍历这个属性是等于5,第二次是4,以此类推。并且是以1作为最后一个元素的下标。
4 forloop.revcounter0 类似于forloop.revcounter。不同的是最后一个元素的下标是从0开始。
5 forloop.first 是否是第一次遍历。
6 forloop.last 是否是最后一次遍历。

③、{% for book in books %}book中的内容{% empty %} 如果book是空显示这儿 {% endfor%}

2、url反转
通过html中url进行网页的跳转 途中template_app未url中的app_name,index即为path中name,中间通过:连接

在这里插入图片描述

注: 这里的URL可以进行字符串拼接或者进行占位传参
①、字符串拼接:<-a href="{% url ‘book:detail’ book_id=1 %}?page=1">图书详情页面</-a>
②、占位传参:<-a href="{% url ‘book:detail’ book_id=1 page=2 %}">图书详情页面</-a>

3、模板过滤器
文中/表示|

项次 过滤器名称 用法 说明
1 add { { value/add:“2” }} 将传进来的参数添加到原来的值上面。这个过滤器会尝试将值和参数转换成整形然后进行相加。如果转换成整形过程中失败了,那么会将值和参数进行拼接。如果是字符串,那么会拼接成字符串,如果是列表,那么会拼接成一个列表。
2 cut { { value/cut:" " }} 移除值中所有指定的字符串。类似于python中的replace(args,"")。
3 date { { birthday/date:“Y/m/d” }} 将一个日期按照指定的格式,格式化成字符串。
4 default { { value/default:“nothing” }} 如果值被评估为False。比如[],"",None,{}等这些在if判断中为False的值,都会使用default过滤器提供的默认值。
5 first { { value/first }} 返回列表/元组/字符串中的第一个元素。
6 last { { value/last }} 返回列表/元组/字符串中的最后一个元素。
7 floatformat
  • { { 34.353333/floatformat:3}}
  • 34.353
四舍五入
8 join { { value/join:"/" }} 类似与Python中的join,将列表/元组/字符串用指定的字符进行拼接.
9 length { { value/length }} 获取一个列表/元组/字符串/字典的长度。
10 lower { { value/lower }} 将值中所有的字符全部转换成小写。
11 upper { { value/upper }} 类似于lower,只不过是将指定的字符串全部转换成大写。
12 random { { value/random }} 在被给的列表/字符串/元组中随机的选择一个值。
13 safe { { value/safe }} 标记一个字符串是安全的。也即会关掉这个字符串的自动转义。
14 slice { { some_list/slice:“2:” }} 类似于Python中的切片操作。
15 stringtags { { value/striptags }} 删除字符串中所有的html标签。
16 truncatechars { { value/truncatechars:5 }} 如果给定的字符串长度超过了过滤器指定的长度。那么就会进行切割,并且会拼接三个点来作为省略号。
四、include和extends

1、include,加载自定义内容,也可以做标签过滤的动作
在这里插入图片描述

2、extends 模板继承
一般都建议一个base.html。将相同的部分放入此中 通过{% block 名称 %} {% endblock %} 来作为继承者的接口。
然后子模板中 通过block中定义的名称,来编译不同的部分。

五、加载静态文件(css、js)

①、首先确保django.contrib.staticfiles已经添加到settings.INSTALLED_APPS中。
②、确保在settings.py中设置了STATIC_URL。
③、在已经安装了的app下创建一个文件夹叫做static,然后再在这个static文件夹下创建一个当前app的名字的文件夹,再把静态文件放到这个文件夹下。
④、如果有一些静态文件是不和任何app挂钩的。那么可以在settings.py中添加STATICFILES_DIRS,以后DTL就会在这个列表的路径中查找静态文件。

STATICFILES_DIRS = [
	os.path.join(BASE_DIR,"static"),
]

⑤、在模版中使用load标签加载static标签。比如要加载在项目的static文件夹下的style.css的文件。

 {
    
    % load static %}
  <link rel="stylesheet" href="{% static 'style.css' %}">

⑥、如果不想每次在模版中加载静态文件都使用load加载static标签,那么可以在settings.py中的TEMPLATES/OPTIONS添加’builtins’:[‘django.templatetags.static’],这样以后在模版中就可以直接使用static标签,而不用手动的load了。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_37697566/article/details/107082702
今日推荐