• day70



    昨日回顾:
    1 虚拟环境
     -1 pycharm里创建
     -2 用命令串讲
    2 视图层:
     1 Request对象---GET,POST,method,body,FILES,META,path(只是路径),get_full_path(拿到全路径,带数据),
     2 HttpResponse对象--->render,redirect,HttpResponse,JsonResponse(返回json格式)
     3 反向解析--->在视图层:本质为了去除地址,重定向来用;在模板层:取出地址,为了发请求来用
     4 JsonResponse:JsonResponse(dic,json_dumps_params={'ensure_ascii':False})---中文显示编码问题
     5 FBV和CBV
      from django.views import View
      class Test(View)
       def get(self,request):
        pass
       def post(self,request):
        pass
     6 django 2.0的path,re_path
      1 re_path跟原来的url一毛一样
      2 path:准确路径
      3 path 内置转换器:5个 int,str,path....用法:<int:year>
      4 自定义转换器:
       <yyy:year>
       
     7 文件上传
      1 html页面上指定编码格式:enctype="multipart/form-data"
      2 视图层:request.FILES(字典),可以根据名字,把文件取出来
       -myfile=request.FILES.get('文件名字')--->得到文件对象
      3 for循环文件对象,保存到本地,文件名字:myfile.name
      
    今日内容:(模板层)
     1 模版语法之变量:详见源码
      -{{ 变量 }}:******重要******{#相当于print了该变量#}
      -深度查询---->统一都用句点符 .
     
     2 模版之过滤器
      -语法:{{第一个参数|过滤器名字:第二个参数}}
      -常用过滤器:(详细用法见源码)
       -length
       -default
       -slice
       -date
       -filesizeformat
       -truncatechars
       -truncatewords
       -safe
       -add
     3 模版之标签
      -{% 标签 %}
      -for:forloop:对象(里面有好多东西:parentloop,last,first,counter....)忘记的话, 自己打印一下
       empty:被循环的对象是空,才走它
       for循环可以嵌套,也可以用if
      -if:
       {% if forloop.first %}
        <p>第一次的我 </p>
       {% elif forloop.last %}
        <p>最后的我 </p>
       {% else %}
        <p>{{ foo }}</p>吧
       {% endif %}
      -with:重命名,应用在变量名过长
      ********都要有结束********
      
     4 自定义标签和过滤器
      --***标签不能用在if判断,过滤器,可以用在if判断
      -自定义过滤器
       -1 先app是不是已经在setting中注册
       -2 在app下创建一个templatetags(****名字不能变***)的文件夹(模块)
       -3 在模块下创建一个py文件,名字随意:mytag.py
       -4 # 第一步,导入template
          from django.template import Library
          # 第二步,定义一个叫register的变量=template.Library()
          register = Library()
       -5 写一个函数,用@register.filter(name='yyy')装饰一下(可以指定别名)
        def str_add(str1, str2): #一定要有返回值
         # 业务逻辑很复杂
         return str1 + str2
       -6 在模板里:(新定定义的标签,过滤器,都要重启程序)
        -{% load mytag %}
        -{{'lqz'|str_add:'nb'}}
      -自定义标签:
       -1-4:前4步,根过滤器的定义完全一样
       -5 只是装饰器不一样
       @register.simple_tag()
        def add_nb(value):
         return value+'nb'
       -6 在模板里:(多个参数,以空格区分)
        -{% load mytag %}
        -{% add_nb 'lqz'%}
  • 相关阅读:
    [atAGC052D]Equal LIS
    [atAGC052C]Nondivisible Prefix Sums
    [atAGC052B]Tree Edges XOR
    [gym103055H]Grammy and HearthStone
    Vector底层结构和源码剖析
    ArrayList的底层源码分析及注意事项
    Collection接口
    集合介绍
    用户管理底层实现
    什么是Mybatis
  • 原文地址:https://www.cnblogs.com/yaoxiaofeng/p/9946764.html
Copyright © 2020-2023  润新知