• DJANGO入门系列之(模板层的简单介绍和视图层的扫尾)



    昨日回顾:
    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'%}



    作业:
    1 模板语法:上课讲的,回去敲一遍(整理到博客上)
    2 常用的过滤器,自己敲一遍
    3 自定义一个过滤器:length,add(支持数字,字符串,数字字符串),
    -拓展:safe
    4 自定义标签:详见下午



  • 相关阅读:
    java进程占用CPU高的问题
    上下文切换的案例以及CPU使用率
    百度地图sdk问题 error inflating class com.baidu.mapapi.map.mapview
    Android APK反编译
    Binary XML file line #17<vector> tag requires viewportWidth > 0
    用代码实现签名
    百度地图出现UnsatisfiedLinkError: Native method not found: com.baidu...
    INSTALL_FAILED_INVALID_APK
    Android package属性、package name和Application ID三者的联系及区别
    Android使用百度定位API时获取的地址信息为null
  • 原文地址:https://www.cnblogs.com/Maikes/p/9946687.html
Copyright © 2020-2023  润新知