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關聯)
django知識點小結