• Django基础篇--模板和路由分发


    Django模板

    首先什么是一个模板?

    简单来说就是一个网页,可以被view响应给用户

    目的是为了解决复杂的显示问题

    2. 模板的设置问题

    setting.py中的TEMPLATES配置

      1)BACKEND: 指定模板的搜索引擎,不用改动

      2)DIRS: 指定模板存放的目录

         DIRS=[‘ index.temp’ ,’music.temp’]

         但是,如果DIRS中为空的话,那么django会自动搜索每个应用中的templates的文件夹作为模板的管理目录

         推荐:DIRS保持空,但必须在每个应用中,创建一个templates的文件夹

       3)APP_DIRS

         True : 首先从DIRS中指定的文件夹中查找模板,如果没有找到指定模板的话,则再搜索templates目录

    3. 模板的加载方式

      HttpResponse() 这是加载字符串的

     1. 使用loader 获取模板,通过HttpResponse进行响应

       最终返回模板前都是把模板转化为字符串

     2. 使用render直接加载

       return  render (request, ’模板名称’ , {参数字典})

    4. url()函数的name参数(这个用法是比较灵活的)

    urlpatterns = [

     url( regex,views , kwargs =None, name = None)

    ]

    name: 定义当前url的别名,允许在Template中使用别名来

    例如:

    urlpatterns = [

     url( regex,views , kwargs =None, name = ’my’)

    ]

    在超链接中用得很多

    需要使用标签

    {% url ‘name值’%}    #服务器解析

    <a href=’ {%url  ‘ my’  %}’ >去往second 页面</a>

    注意:name别名不能重复定义  

    url参数

    <a href=’/music/show/35’> 去往show/35地址的页面</a>  #不用别名的条件下写全路由 

    <a href=’ {%url  ‘ my’  87 %}’ >去往show/87页面</a>  #传参数,直接在’别名’ 后加空格加参数

     

    模板语法:

    1. 变量

      作用:允许将后端的数据传递给模板(html),模板中,会根据变量实际值进行显示

      1)允许传递给变量的数据类型

       数字,字符串,列表,元组,字典,函数,对象(类) (注意:集合不行)

       注意:函数一定要返回值

      2)如何传递变量到模板中

    render

    dict={

     ‘变量1’:’值1’,

    ‘变量1’:’值1’,

    }

    return  render(request, ‘xx.html’,dict)

    重点:

       如果是传列表,元组,字典等,先组织好数据,再把数据放dict中

       例如:

    dict ={

     ‘l’ :list,

     ‘d’ :dict,

    }

    或者用locals()将局部变量组织成字典传入参数,对象除外

      3)模板中获取变量的值

       {{ 变量名称}}      #字符串

       {{变量名称.1}}     #列表/元组

       {{变量名称. key}}    #字典

       {{函数名}}         #函数

       {{类名.方法名 }}    #对象

    2. 标签 (具体更多标签用法可以看看官方文档)

    1)什么是标签?

    允许嵌套一些服务器段端的逻辑运算到模板中

    而变量只管数值,标签管运算

     2)语法

      {% %}

    注意:写的过程运算符,变量都必须用空格隔开

    常用标签

    1. {% if 条件%}   #条件可以用简单逻辑判断,例如 >  <  == 等等

         {% else  %}

         {% end if %}

    接受not, and ,or 运算

    但是 and  和  or不能同时出现

    以下内容当做False处理:

       空[]

       空 ()

       空{}

    数值0

    空字符串

    None

     {% ifequal  值1  值2 %}   #判断值1 和值2是否相等,相当于值1 ==值2

     {% else %}

     {% endifequal %}

    2. for标签

     {% for  变量  in  列表| 元组 | 字典 %}

     {% endfor%}

    允许使用的内置变量(免声明):

       forloop

      1. forloop.counter :记录循环次数,从1开始

      2. forloop.counter0 :同上,从0开始

      3. forloop.revcounter:记录未被遍历的数量

      4. forloop.revcounter0 :同上,从0开始

      5. forloop.first : 布尔值,标记是否是第一个项(通常对第一个、最后一个做一些样式设置)

      6. forloop.first : 布尔值,标记是否是最后一个项

    <li  { % if  forloop.first  %} style= ‘color:red’ {% endif%} ></li>

    3.过滤器

    在显示变量之前,运行对数据进行筛选或改变

    语法:

    {{ var | 过滤器}}

    常用过滤器:

    1. {{var| upper}}

     将英文字母改写为大写

    2. {{var| lower}}

       将英文字母改写为小写

    常用的过滤器

    1. 加法操作

    var|add : ‘ num’

    first | add: second   #first 和 second 是两个数字类型的列表

    2.对小数进行四舍五入(金融和交系统)

     var | floatformat:num  # num指定保留多少位小数

    3. 超长的字符显示省略号(一些字符串显示)

    value | truncatechars:num   #num指定保留的字符数

    value | truncatewords: num

    也可以用css实现

    white-space:nowrap

    text-overflow:ellipsis

  • 相关阅读:
    add() 方法用于向 <select> 添加一个 <option> 元素。
    jQuery LigerUI V1.2.3 (包括API和全部源码) 发布
    jQuery LigerUI V1.2.2 (包括API和全部源码) 发布
    SpringBoot整合Dubbo配合ZooKeeper注册中心
    【转】MySql 三大知识点——索引、锁、事务
    Redis持久化背后的故事
    利用Docker搭建Redis集群
    synchronized的实现原理与应用
    ConcurrentHashMap
    volatile的内存语义与应用
  • 原文地址:https://www.cnblogs.com/thomson-fred/p/9785697.html
Copyright © 2020-2023  润新知