zoukankan      html  css  js  c++  java
  • django----模板语言

    模板概述
    1)作为Web框架,Django提供了模板,可以很便利的动态生HTML
    2)模版系统致力于表达外观,而不是程序逻辑。
    3)模板的设计实现了业务逻辑(view)与显示内容(template)的分离,一个视图可以使用任意一个模板,一个模板可以供多个视图使用。
    4)模板包含:
    o HTML的静态部分
    o 动态插入内容部分
    5)Django模板语言,简写DTL,定义在django.template包中,由startproject命令生成的settings.py定义关于模板的值:
    o DIRS定义了一个目录列表,模板引擎按列表顺序搜索这些目录以查找模板源文件
    o APP_DIRS告诉模板引擎是否应该在每个已安装的应用中查找模板,这种便于发布应用
    • 常用方式:在项目的根目录下创建templates目录,设置DIRS值
    DIRS=[os.path.join(BASE_DIR,"templates")]       注释{# 代码或html #}

    模版模板语言运算

    Django模版加法:{{ value|add:10}}value=5,则返回15 Django模版减法:

    Django模版减法  {{value|add:-10}} value=5,则返回-5,这个比较好理解,减法就是加一个负数

    Django模版除法{% widthratio 5 1 100 %}

    上面的代码表示:5/1 *100,返回500,widthratio需要三个参数,它会使用 参数1/参数2*参数3,所以要进行乘法的话,就将参数2=1即可

     {% widthratio 5 100 1 %} 前面的代码表示:5/100*1,返回0.05,只需要将第三个参数设置为1即可

    注意

    当模版引擎遇到点("."),会按照下列顺序查询:
    1. 字典查询,例如:foo["bar"]   {{foo.bar}}
    2. 属性或方法查询,例如:foo.bar
    3. 数字索引查询,例如:foo[bar]  {{all_students.0}}。如果变量不存在, 模版系统将插入'' (空字符串)。在模板中调用方法时不能传递参数

    在页面判断登陆

    {% if request.user.is_authenticated %}显示登陆界面{% else %}未登录界面{% endif %}
    for循环:
    { %for ... in ...%}
    循环逻辑
    {{forloop.counter}}表示当前是第几次循环
    { %empty%}
    给出的列表为或列表不存在时,执行此处
    { %endfor%}
    例子:{% for num in b %} b为列表
    {{num}}
    {%endfor%}<br>
    {% for key,value in c.items %}  #c为字典
    {{key}}---->{{value}}
    {% endfor %}<br>
    {% if 条件 %} { %elif ...%}满足条件执行语句{% else %}不满足条件的语句 {% endif %}  
    data为html标签可以用{{ data|safe }}防止转义
    comment标签,多行注释
    { % comment % }
    多行注释
    { % endcomment % }
    include:加载模板并以标签内的参数渲染
    可以包含另外一个模块过来
    { %include "foo/bar.html" % }

    在项目里建立static文件夹然后设置文件夹路径(staticfiles )

    然后在前端页面 {% load staticfiles %}导入静态文件(css/js/img)然后修改路径
    <link href="{% static 'css/bootstrap.min.css' %}" rel="stylesheet">
    <script src="{% static 'js/jquery.min.js' %}"></script>
    from django.contrib.auth.decorators import login_required 引入登陆验证
    @login_required(login_url='/user/user_login')用装饰器来进行验证并转到登陆界面

    在继承的时候父模板里写

    {% block sp9 %}
    {{ '我这里可以更改' }}
    {% endblock %}
    在子模版里
    {% extends 'base.html' %}
      {% block sp9 %}
    {% endblock %}

    继承说明

    • 如果在模版中使用extends标签,它必须是模版中的第一个标签
    • 不能在一个模版中定义多个相同名字的block标签
    • 子模版不必定义全部父模版中的blocks,如果子模版没有定义block,则使用了父模版中的默认值
    • 如果发现在模板中大量的复制内容,那就应该把内容移动到父模板中
    • 使用可以获取父模板中block的内容
    • 为了更好的可读性,可以给endblock标签一个名字

    拼接路径 <img src="{{ MEDIA_URL }}{{ article.image }}" width="700px">

    ---------------------

    转载:// https://blog.csdn.net/xiaoming0018/article/details/80389277

  • 相关阅读:
    答《同样 25 岁,为什么有的人事业小成、家庭幸福,有的人却还在一无所有的起点上?》
    [面试记录-附部分面试题]2014第一波的找工作的记录
    项目总结(二)->一些常用的工具浅谈
    项目总结(一)->项目的七宗罪
    Android学习笔记(三)Application类简介
    Android学习笔记(二)Manifest文件节点详解
    Android学习笔记(一)Android应用程序的组成部分
    Mac下搭建Eclipse Android开发环境
    Android开发必知--自定义Toast提示
    正则表达式(一)
  • 原文地址:https://www.cnblogs.com/yanxiaoge/p/9973139.html
Copyright © 2011-2022 走看看