1. 程式人生 > >模板匯入和繼承+模型層:單表操作

模板匯入和繼承+模型層:單表操作

知識點:

1、web應用:

-s包括兩部分:web伺服器 和 application
-目前階段django專案用的web伺服器是:wsgiref  + application
-上線會用uwsgi + application
-web伺服器(本質是socket)都實現了wsgi協議
-wsgi:web服務閘道器介面,是一個協議

2、模板的匯入和繼承

-如何引入靜態檔案(static目錄的配置)
-模板的匯入:
1 寫一個好看的模板
2 在想用的地方
{% include "好看模板的名字.html" %}
-模板的繼承
-寫一個母版(留一些block(盒子)),留的盒子越多,可擴充套件性就越高
{% block top %}

{% endblock %}
-使用:
-在一個新的html中
-{%extend 'base.html'%}
-擴寫留的對應的盒子
{% block top %}
擴寫的內容
{% endblock %}
-注意:
1 擴寫的時候,盒子的位置無所謂,只要名字對應正確,就會正確填充
2 盒子可以不擴寫,不寫就是原來的樣子
3 如果要顯示母版盒子中原來的東西,需要
{{block.super}}----寫在哪,原來的內容就放在哪

3、靜態檔案 相關

1 直接寫死:<link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.css">
2 用static標籤:需要一個引數(返回靜態檔案路徑)
{% load static %}
<link rel='stylesheet' href="/static/bootstrap-3.3.7-dist/css/bootstrap.css">
3 用get_static_prefix: (返回資料夾路徑(需要自己拼接檔案路徑))
{%load static %}
<link rel="stylesheet" href="{% 用get_static_prefix %}bootstrap-3.3.7-dist/css/bootstrap.css">

4、inclusing_tag:返回html片段

1 前面幾步跟標籤和過濾器一樣
2 裝飾器:@register.inclusiong_tag("inclusiongtag.html",)
3 返回一個字典,字典中的值,可以在inclusiongtag中使用
4 使用:
{%load 你寫的那個py檔案%}
{% 函式名字 引數 引數 %}

5、模型層:

單表操作:

-增加,刪,改:兩種方式:queryset物件的方法,book物件的方法
-改:需要用save()
-get()方法:查詢的資料有且只有一條,如果多、少都拋異常


單表查詢:
queryset物件才有query,他就是原生SQL


-<1> all():                  查詢所有結果


<2> filter(**kwargs):       它包含了與所給篩選條件相匹配的物件  


<3> get(**
kwargs):          返回與所給篩選條件相匹配的物件,返回結果有且只有一個,如果符合篩選條件的物件超過一個或者沒有都會丟擲錯誤。  


<4> exclude(**kwargs):      它包含了與所給篩選條件不匹配的物件


<5> order_by(
field):       對查詢結果排序('-id')


<6> reverse():              對查詢結果反向排序 


<8> count():                返回資料庫中匹配查詢(QuerySet)的物件數量。


<9> first():                返回第一條記錄 


<10> last():                返回最後一條記錄 


<11> exists():              如果QuerySet包含資料,就返回True,否則返回False


<12> values(field):        返回一個ValueQuerySet——一個特殊的QuerySet,執行後得到的並不是一系列 model的例項化物件,而是一個可迭代的字典序列


<13> values_list(
field):   它與values()非常相似,它返回的是一個元組序列,values返回的是一個字典序列


<14> distinct():            從返回結果中剔除重複紀錄

 

單表基於雙下劃線的模糊查詢

 

Book.objects.filter(pricein=[100,200,300])  #在列表範圍內

 

Book.objects.filter(pricegt100) #大於


Book.objects.filter(pricelt=100) #小於


Book.objects.filter(price
gte=100) #大於等於


Book.objects.filter(pricelte=100) #小於等於


Book.objects.filter(price
range=[100,200]) #在100~200之間


Book.objects.filter(titlecontains="python") #包含“python”


Book.objects.filter(title
icontains="python") #不區分大小寫


Book.objects.filter(titlestartswith="py") #以“py”開頭


Book.objects.filter(pub_date
year=2012) #匹配時間 年 為“2012”的


book=models.Book.objects.filter(pub_datamonth='01') #匹配時間 月 為“01”的


book=models.Book.objects.filter(pub_dataday='11') #匹配時間 日 為“11”的