1. 程式人生 > >django知識點小結

django知識點小結

叠代 文件上傳 ase ext 條件 () 與或非 having 參數

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關聯)

django知識點小結