美文网首页
Django-模板

Django-模板

作者: 遇明不散 | 来源:发表于2019-05-15 16:47 被阅读0次

模板

什么是模板
  • 模板就是要动态呈现给用户的网页
  • 模板的本质就是网页- 前后端,动静结合的网页
  • Django的模板引擎是由Django自己提供的,并不是Jinja2,所以Django的模板语法与Flask(Jinja2)的语法会有一些不同
模板的设置

settings.py 中有一个 TEMPLATES 变量

  • BACKEND:指定使用的模板的引擎
  • DIRS:指定模板的存放目录们
    • 如果写东西:则按照写好的路径去找模板
    • 如果未写东西:那么Django会自动的到每个应用中搜索一个叫templates的目录来作为模板的存放目录
  • APP_DIRS: 是否自动搜索应用中的目录
    • True:表示搜索应用中的 templates 的目录
模板的加载方式
  • 通过loader对象获取模板,再通过HttpResponse进行响应
from django.template import loader
def xxViews(request):
    # 通过 loader 加载模板
    t = loader.get_template("模板名称")
    # 将模板渲染成字符串
    html = t.render()
    # 将字符串通过HttpResponse响应给客户端
    return HttpResponse(html)
  • 使用 render 直接加载并响应模板
def xxViews(request):
    return render(request,'模板的名称')

模板的语法

变量
  • 将后端的数据传递给模板进行显示
  • 在Django中允许作为变量传递给模板的数据类型:字符串,整数,列表,元组,字典,函数,对象
  • 变量必须要封装到字典中才能传递给模板
  • 在模板中使用变量:{{变量名}}
# 使用 loader 加载模板
dic = {
    '变量名1':'值1',
    '变量名2':'值2',
}

t = loader.get_template('xxx.html')
html = t.render(locals() 或 dic)
return HttpResponse(html)

# 使用 render 加载并返回模板
dic = {
    '变量名1':'值1',
    '变量名2':'值2',
}
return render(request,'xx.html',dic)
标签
  • 将服务器端的功能嵌入到模板中
  • 语法:{% 标签内容 %}
  • 常用标签
    • comment 注释
    • for 循环遍历 列表,字典,元组
    • if 在模板中完成变量的判断操作
    • 更多请查看
<!-- comment -->
{% comment "Optional note" %} <!-- Optional note 为注释名字,可选 -->
    <p>{{comment content}}</p>
{% endcomment %}

<!-- for -->
{% for 变量 in 列表|元组|字典 %}
{% endfor %}
<!--
循环中允许使用 forloop 内置变量来获取循环的信息
    forloop.counter : 当前循环遍历的次数
    forloop.first : 判断是否为第一次循环
    forloop.last : 判断是否为最后一次循环
-->

<!-- if -->
{% if 条件 %}
    满足条件时要执行的内容
{% endif %}
<!-- if ... else -->
{% if 条件 %}
    满足条件时要执行的内容
{% else %}
    不满足条件时要执行的内容
{% endif %}
<!--if ... elif ... else -->
{% if 条件1 %}
    满足条件1时要执行的内容
{% elif 条件2 %}
    或满足条件2时要执行的内容
{% elif 条件3 %}
    或满足条件3时要执行的内容
{% else %}
    或以上条件都不满足时要执行的内容
{% endif %}
过滤器
  • 在变量输出显示之前,对变量进行筛选和过滤
  • 过滤器的语法:{{变量|过滤器:参数}}
  • 常用过滤器
    • {{value|upper}} 将value变为大写
    • {{value|lower}} 将value变为小写
    • {{value|add:num}} 将num值累加到value之后
    • {{value|floatformat:n}} 将value四舍五入到n位小数
    • {{value|truncatechars:n}} 将value截取保留至n位字符(包含...)
    • 更多请查看
静态文件

在Django中,不被解释器所动态解析的文件就是静态文件

Django中静态文件的处理

settings.py 中设置有关静态文件的信息

  • 设置静态文件的访问路径
    • 在浏览器中通过哪个地址能够找到静态文件
    • STATIC_URL = '/static/'
    • 如果访问路径是 http://localhost:8000/static/...,那么就到静态文件存储路径中找文件而不走路由(urls.py)
  • 设置静态文件的存储路径
    • 指定静态文件存储在服务器上的哪个位置处
    • STATICFILES_DIRS=(os.path.join(BASE_DIR,'static'),)
    • 静态文件目录的存放位置
      在项目的根目录处创建一个static目录,用于保存静态文件
      每个应用中也可以创建一个static目录,用于保存静态文件
访问静态文件
  • 直接使用静态文件访问路径进行访问
    http://localhost:8000/static/..
    <img src="http://localhost:8000/static/images/a.jpg">
  • 使用 {% static %} 访问静态资源
    {% static %}表示的就是静态资源的访问路径
    • 在模板的最顶层增加 {% load static %}
    • 在使用静态资源时 <img src="{% static 'images/a.jpg' %}">

模板的继承

语法
在父模板中

必须要标识处哪些内容在子模板中允许被修改

# 标签
{% block 名称 %}
   # 允许被修改的内容
{% endblock %}
# block的作用:
# 在父模板中正常显示
# 在子模板中,如果不修改的话则按父模板的显示,要是修改的话则按照子模板的内容显示
在子模板中
# 指定继承自哪个父模板
{% extends '父模板名称' %}
# 增加 block 标签,改写属于自己的内容
{% block 名称 %}
  # 自己的内容
{% endblock %}
# 父模板的变量不会给继承到子模板

url反向解析

在模板上做反向解析
# 基本解析
{% url '别名' %}

# 带参的解析
{% url '别名' '参数1' '参数2' %}
在视图上做反向解析
# 基本解析
url = reverse('别名')  # url 就是通过别名解析出来的地址

# 带参的解析
url = reverse('别名',args=(参数1,参数2)) # url 就是通过别名解析出来的地址

相关文章

  • Web应用框架

    Django-提供了构建Web系统的基本应用框架-MTV模式: 模型(model), 模板(Template), ...

  • django起航2-初始模板

    Django-模板 在应用目录blog下创建templates目录(必须是这个,记得加s) 在templates中...

  • Django-模板

    模板 什么是模板 模板就是要动态呈现给用户的网页 模板的本质就是网页- 前后端,动静结合的网页 Django的模板...

  • 十五 django-模板语法

    一、概要 对于模版,其实就是读取模版(其中嵌套着模版标签),然后将模型中获取的数据插入到模版中,最后将信息返回给用...

  • Django-管理站点重写admin模板

    使用Django的admin管理工具,可以快速的构建自己的管理平台,使用Django原生太的模板更能使我们节省很多...

  • [原](05)Django-创建我的网页

    Django-创建我的网页 源码地址:https://github.com/edrainann/Django_we...

  • 2018-04-25

    Django-上传图片 1. 模型定义中将属性定义成 models.ImageField 类型 pic=model...

  • Django-分页

    Django-分页 1.创建对象 Paginator 对象的 page()方法返回 Page 对象,不需要手动构造...

  • Django-分页

    django-分页 一.django自带的分页 以读取UserInfo表为例 1.导入模块 from django...

  • 前言: Django-企业级开发框架

    Django-介绍 它是一个Python Web框架, 在众多Python Web框架中,它是应用最广泛的,发展最...

网友评论

      本文标题:Django-模板

      本文链接:https://www.haomeiwen.com/subject/pylyaqtx.html