昨日回顾: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 自定义标签:详见下午
原文地址:https://www.cnblogs.com/Maikes/p/9946687.html
时间: 2024-11-05 14:48:54