• 视图层


    三板斧

      HttpResponse:返回字符串类型
      render:返回html,并且可以给页面传值
      redirect:重定向
      视图函数必须要返回一个httpresponse对象
    

    JsonResponse对象

      数据交互需要使用json过度,实现跨语言数据传输
      from django.http import JsonResponse
      JsonResponse(user_dict)
    

    文件上传

      form上传文件类型的数据:method必须指定成post;enctype必须制定为multipart/form-data
      file_obj = request.FILES.get('file')
      file_obj.name
      with open(file_obj.name,'wb') as f:
            for line in file_obj.chunks():
                  f.write(line)
    

    request对象方法

      request.methdo
      request.POST
      request.GET
      request.FILES
      request.path 只能拿到路由
      request.get_full_path 也能拿到?后面的信息
      request.path_info 只能拿到路由
      request.body 原生的浏览器发过来的二进制数据
    

    CBV

      views:
      from django.views import View
      class MyLogin(View):
            def post(request):
                  pass
            def get(request):
                  pass
      urls:
      url(r'^login/',views.MyLogin().as_view())
    

    模板语法

      1.可以传递python所有数据类型
            {{}}:变量相关
            {%%}:逻辑相关
      2.函数名放在模板语法内,会加括号自动调用,但是模板语法不支持给函数传额外的参数,而且不会报错,不会执行
      3.类名放在模板语法呢,也会加括号自动调用,也就是实例化,对象是可以被传递的,对象被展示到html页面上,会触发__str__方法
      4.django模板语法的取值是固定的格式,只能采用句点符号,就是.
    

    过滤器

      类似于模板语法内置的一些方法,Django内置有60多个过滤器
      {{ 变量名|过滤器:参数 }}
      {{ s|length }} 长度
      {{ b|default: }} 类似于字典的get,前面布尔值如果为true,返回第一个,不然返回第二个
      {{ f|filesezeformat: }} 计算文件的大小
      {{ d|date:'Y-m-d' }} 格式化时间
      {{ l|slice:'0:4:2' }} 切片,支持步长
      {{ info|truncatechars:9 }} 摘要处理,截取字符,三个点也算
      {{ e|truncatewords:9 }} 截取单词,不包含三个点,只会按空格截取
      {{ msg|cut:'' }} 移除特定的字符
      {{ l|join:'#' }} 拼接操作
      {{ n|add:10 }}  拼接操作,包含加法,字符串
      {{ h|safe }} 转义
            from django.utils.safestring import mark_safe
            res = mark_safe()
    

    for循环

      forloop.counter0  索引
      forloop.first  第一次为true
      forloop.last   最后一次为true
    

    with语法

      {% with info as i %}
            在with语法内,可以通过别名快速地使用到前面的句式
      {% endwith %}
    

    自定义过滤器、标签、inclusion_tag

      先三步走:
            1.在应用下创建一个名字必须叫templatetags文件夹
            2.在该文件夹内创建任意名称的py文件
            3.在该py文件内必须先书写下面两句话(单词一个都不能错):
                  from django import template
                  resigter = template.Library
      # 过滤器,最多有两个参数
      @register.filter(name='baby')
      def my_func(v1,v2):
            return v1 + v2
      {% load my_tag %} # 加载py文件
      {{ n|baby:2 }}
      # 标签,参数可以有多个
      @register.sample_tag(name='plus')
      def my_sample(a,b,c,d):
            return a+b+c+d
      {% load my_tag %} # 加载py文件
      {% plus 'jason' a b c d %} # 参数之间用空格隔开
      # inclusion_tag
      @register.inclusion_tag('left_menu.html')
      def my_inctag(n):
      data = ['第{}项'.format(i) for i in range(10)]
      return locals() # 将data传给left_menu.html
      {% left 10 %} # 当html页面某一个地方页面需要传参数才能够动态的渲染出来,并且在多个页面上都需要使用到该局部,那么就考虑将该局部部页面做成inclusion_tag形式
    

    模板的继承

      {% extends 'home.html' %} # 继承了整个html页面
      # 模板页面需要变动的地方如何处理?
      {% block content %} # 对需要变化的页面做一个标记,叫content
      {% endblock %}
      # 然后,在子页面中
      block + tab
      {% block content %}
            自己独有的内容
      {% endblock %}
    

    模板的导入

      # 将页面的某一个局部当成模块的形式,哪个地方需要导入即可
      {% include 'xx.html' %}
  • 相关阅读:
    隐马尔科夫模型(Hidden Markov Models) 系列之三
    隐马尔科夫模型(Hidden Markov Models) 系列之二
    隐马尔科夫模型(Hidden Markov Models) 系列之一
    详解大端模式和小端模式
    viewController详解
    手机产品设计禁忌
    直接拿来用!最火的iOS开源项目(三)
    直接拿来用!最火的iOS开源项目(二)
    <c:out>标签不能正确输出value中的值
    元素类型为 "configuration" 的内容必须匹配 "(properties?,settings?,typeAliases?,typeHandlers?
  • 原文地址:https://www.cnblogs.com/qijiaxun/p/14257374.html
Copyright © 2020-2023  润新知