zoukankan      html  css  js  c++  java
  • django知识点小结

    web应用

    什么是web应用:
      网站:BS架构的应用程序:B是浏览器 S:server(实现了wsgi协议)+application(我们都在写这个)
      其实就是cs

      MVC和MTV(Django)
        -M:Model跟数据库打交道
        -V:模板
        -C:控制器
      MTV:(MTV也是MVC架构)
        M:models跟数据库打交道
        T:Templates模板层,对到MVC是V这一层
        V:视图,Views,路由+V是MVC的C

      HTTP协议
        略
      web框架
        application拆分
      a:server b:映射关系 c:模板渲染
        Flask:
        Django
        Tornado


    第二篇:Djangon简介

    第三篇:路由控制
    一 Django中路由的作用
      请求的路径跟视图函数的映射关系
    二 简单的路由配置
      四个参数:第一个正则表达式,第二个函数内存地址,第三个默认值,第四个是别名
    三 分组
      无名:(正则表达式) 值分出来当位置参数传到视图函数
      有名:(?P<名字>正则表达式) 值分出来当关键字参数传到视图函数
    四 路由分发
      url(r'^app01/', include('app01.urls')),

    五 反向解析
      就是根据别名,取到对应的url地址
      -视图层:reverse('别名'args=())
      -模板层:{% url '别名' 参数 参数%}


    六 名称空间
      -include('app01.urls',namespance='app01')
      -以后再反向解析:reverse('app01:别名'args=())
    七 django2.0版的path
      -path:路径是准确路径,不是正则表达式了
      -内置了5个转换器
      -自定义转换器

    第四篇:视图层
      1 视图函数
      2 HttpRequest对象
      -GET
      -POST
      -FILES
      -path
      -method
      -get_full_path()
      -body
      3 HttpResponse对象
          -三件套

      4 JsonResponse
        -HttpResponse+json
      5 CBV和FBV
        -基于类的视图:
        -url配置 类名.as_view()
        -views.py
          class Test(View)
          dispatch:总的分发方法
          def get(self,request)
          rentun HttpRequest对象
      6 简单文件上传
        -前端页面:form-data
        -视图层:FILES(字典)根据key值取出来,拿到文件对象

    问题:
    -Post请求,是否可以在请求路径中加参数?可以,从GET中取,body的内容,从POST中取
    -反向解析传参
    举例:在模板层反向解析出要删除的图书路径
    -url(r'^dlbook/(?P<pk>d+)', views.deletebook,name='deletebook'),
    -<td><a href="{% url 'deletebook' book.pk%}">删除</a></td>


    第五篇:模版层
    一 模版简介
      模板语言
    二 模版语法之变量
      -基本用法:{{ 变量 }}
      -深度查询 .
      -{{ 对象.方法 }} 方法不能传参数
      -字典,列表 用 .
    三 模版之过滤器
      -date
      -default
      -slice
    ...


    四 模版之标签
      {%for %}
      {%for a in 可迭代对象 %}
      {{a.name}}
      {{forloop}}
      {%endfor%}

      {% if 条件%}
      {%elif 条件%}
      {%else%}
      {%endif%}

      {% with %}:取别名


    五 自定义标签和过滤器
      1 确认app是否已经注册
      2 在app下创建一个包:templatetags
      3 在包中写mytag.py
      4 from django.template import Library
      5 register=Library()
      6 标签:
      @register.simple_tag(别名)
      def mytesttag(a,b,c)
      return a+b+c
      过滤器
      @register.filter(别名)
      def mytestfilter(a,b)
      return a+b
      7 使用标签
      {% load mytag%}
      标签
      {% mytesttag 参数1 参数2 参数3%}
      过滤器
      {{ 第一个参数|mytestfilter:'第二个参数'}}


    六 模版导入入和继承
      -导入 {% include '模板的名字'%}
      -继承
      -先写一个母版,在母版中定义盒子
        {% block content %}

        {% endblock %}
      -使用:
      在其他模板中:
        {% extends 'base.html' %}
        {% block content %}
      写变化的内容
        {% endblock %}
        -{{block.super}} 会把原来母版中的内容拿过来



    七 静态文件相关
    -三种方式
    -写死
    -static
    -get_static_prefix

    第六篇:模型层:单表操作,多表操作

    -单表:基本查询,双下划线的模糊查询

    -多表:
      基于对象的跨表

      基于双下划线的多表
    -
    聚合查询
      -聚合函数使用
      F,Q查询
      F可以去除字段的值,
      Q查询:构造出与或非得关系
    分组查询:
      '''
      group by谁就以谁做基表
      filter在前表示where
      filter在后表示having
      values在前表示group by 的字段
      values在后表示取值
      '''

    #查询每个出版社的名称和书籍个数

    多表的小结:

             1 queryset对象有update,delete,create

             2 表模型对象,有save,delete

             3 手动创建第三张表(ManyToMany关联)

  • 相关阅读:
    【转】Hive Data Manipulation Language
    【转】Vim显示中文乱码
    【转】Twitter算法面试题详解(Java实现)
    【转】判断单链表中是否存在环及查找环的入口点
    【转】SQL语句面试题
    【转】经典的SQL语句面试题
    【转】Java实现折半查找(二分查找)的递归和非递归算法
    【转】[IT综合面试]牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结
    【笔试/面试题】中科创达——9.28(持续更新ing)
    百度2014校园招聘笔试题(成都站,软件研发岗)——2014.09.21
  • 原文地址:https://www.cnblogs.com/zhouhai007/p/10284871.html
Copyright © 2011-2022 走看看