zoukankan      html  css  js  c++  java
  • Django模板语言的学习

    1.模板系统
      1.语法
        1.变量相关
        {{ name}} ,{{ name|length}}, {{ name |default:"默认值"}}
      2.逻辑相关
        1.if判断
        {% if a > b %} //{% if a in b%}
        {% endif %}

        {% if a > b %}
        {% else %}
        {% endif %}

        {% if a > b %}
        {% elif %}
        {% else %}
        {% endif %}
        2.for循环
        {% for i in name-list %}
        {{ i }}
        {% empty %}
        <p>如果为空的话这里可以填写一些提示内容</p>
        {% endfor %}

        forloop.counter
        forloop.counter0
        forloop.revcounter
        forloop.revcounter0

        forloop.first
        forloop.last

        forloop.parentloop -->两层循环
    2.filter
      1.常用的filter
      1. length
      2. filesizeformat -->格式化文件大小的
      3. date:'Y-m-d H:i:s' -->格式化时间
      4. silce 切片
      5. safe -->XSS攻击 通过评论的方式写一段JS代码
      6. truncatechars:20 -->截取字符长度 一边用来摘要
      7. default -->默认
    2. 自定义的filter
      步骤
      定义阶段
        1. 在app下新建一个python的包:templatetags包
        2. 在上面的python包中新建一个python文件 名字随意
        3. 在上述的python文件中
        form django import template
        #生成一个注册用的示例
        register = template.Libray() #注意是大写的
        #定义一个自定义的filter
        @register.filter(name='new_filter')
        def add_str(arg): (最多有两个参数) #第一个参数是通道符前面的 ,可以有第二个参数
        return ...
      调用阶段
        1. 在Django模板文件中,导入刚才新建的python文件
        {% load py文件名 %}
        2. 按照filter的语法调用
        {{ name|new_filter}} #没有第二个参数传入
        {{ name|new_filter:arg2 }} #传入第二个参数
        3.母版与组件
    1.什么时候用母版
      html页面有重复的代码的,把他们提取出来放到一个单独的html文件
    2.子页面如何使用母版
      {% extends 'base.html' %} -->必须放在第一行
      {% block 块名 %} {% endblock %} -->子页面使用block去替换母版中同名的块
    3.组件
      1.什么时候使用组件
      重复代码 包装成一个小的html文件
      2.如何使用
      {% include '组件.html' %}
    3.Django模块语言中关于静态文件的灵活写法
      1.利用static方法帮我凭借静态文件的路径
      STATICFILES_DIRS = [
      os.path.join(BASE_DIR, "static"),
      ]
      {% load static %}
      <link href="{% static 'bootstarp/css/bootstrap.min.css' %}" rel="stylesheet">
    4.自定义的simple_tag
      比filter传入的参数多
    5.有自定义的inclusion_tag
      用来返回一段html代码
      1.在定义阶段
      在app中下面新建templatetags文件夹
      新建一个xx.py文件
      from django import template
      #生成注册示例 ,名字必须是register
      register = template.Library()
      @register.inlcusion_tag('ul.html')
      def show_ul(num):
      num = 1 if num < 1 else int(num)
      data = {"第{:0>3}号技师".format(i) for i in range(1,num+1)}
      return {'data':data}
    2.调用阶段
      {% load xx文件名 %}
      {% show_ul 10 %}
      4.视图
        1.CBV和FBV
          CBV基于类的视图
          FBV基于方法的视图
        2.request对象
          1.相关方法
            1.request.method -->获取请求的方法(GET或者POST等)
            2.request.GET -->通常用来获取URL里面的参数
            3.request.POST -->通常用来获取POST提交过来的数据
            4.request.path_info -->获取用户请求的路径
            5.request.body -->获取用户POST的内容字节形式
    5.文件上传
        注意form表单里面需要有 enctype="multipart/form-data"
        在保存上传文件钱,数据需要存放到某个位置,默认担当上传文件小于2.5M的时候,django会将上传文件的全部内容直接上传
        当上传文件很大的时候,django会把上传文件写到临时文件中,然后存放到系统的临时文件里
        在后台处理的时候调用
        <input type='file' name='filename'>

        request.FILES['filename'] -->获取文件对象
        request.FILES['filename'].name -->获取文件对象名
        request.FILES['filename'].chunks() -->从文件对象中一点一点的读取 需要写个循环读取
    4.路由系统
        1.分组匹配 -->给视图函数传一个位置参数
        path('delete_p_list/[0-9]{2}/$',views.delete_p_list),
        <a href="/delete_p_list/{{ publisher.id }}">删除</a></button>
        2.分组命名匹配 -->给视图函数传一个关键字参数
          3.反向解析URL
        本质上就是给url匹配模式起别名 然后再用别名拿到具体的URL路径
        re_path('publisher_list/[0-9]{2}/$',views.Publisher.as_view(),name='pulisher_list'),
        <a href="{% url 'pulisher_list' %}" class="active">
    1.如何使用
        在模板语言中
        {% url '别名' %}
        在视图中
        from django import reverse
        reverse('别名') -->得到一个具体的URL路径

  • 相关阅读:
    在一页纸上打印8页PPT讲义的方法
    如何用XML数据绑定前台Repeater
    ASP.net中导出Excel的简单方法
    鼠标浮上JS自动弹窗
    通过拖动百度地图的添加覆盖物获取所在地的经纬度坐标
    void FillSolidRect(lpRect,clr)无效原因现象。
    WM_DRAWITEM与DrawItem()的讨论
    自绘控件 CSatic无法响应OnDrawItem
    【原创】CListCtrl和CImageList显示缩略图,图片自动排列。
    【转】VC改变对话框按钮字体颜色和背景的解决方案
  • 原文地址:https://www.cnblogs.com/wuyiyuan/p/12022276.html
Copyright © 2011-2022 走看看