天天看點

django模闆的導入和繼承及單表查詢

1 補充http請求的本質:socket

2 web應用:

                   -S包括兩部分:web伺服器+application

                   -目前階段django項目用的web伺服器是:wsgiref+application

                   -上線會用uwsgi+application

                   -web伺服器(本質是socket)都實作了wsgi協定

                   -wsgi:web服務網關接口,是一個協定

                   a:socket

                   b:路由映射關系

                   c:模闆語言的渲染

                   django: a:用别人的   b:自己寫的    c:自己寫的

                   flask:  a:别人的     b:自己寫的    c:用了别人的

                   tornado:a:自己寫的   b:自己寫的    c:自己寫的

         3 模闆的導入和繼承

                   -如何引入靜态檔案(static目錄的配置)

                   -模闆的導入:

                            1 寫一個好看的模闆

                            2 在想用的地方:

                                     {% include '好看模闆的名字.html' %}

                   -模闆的繼承

                            -寫一個母版,base.html(留一些block(盒子)),留的盒子越多,可擴充性就越高

                                     {% block top %}  #top這個名字可以随便起在子版中應用時要和母版一緻

                                     {% endblock %}

                            -使用:

                                     -在一個新的html中

                                               -{%extend 'base.html'%}

                                               -擴寫留的對應的盒子

                                                        {% block top %}

                                                                 擴寫的内容

                                                        {% endblock %}

                            -注意:

                                     1 擴寫的時候,盒子的位置無所謂,隻要名字對應正确,就會正确填充

                                     2 盒子可以不擴寫,不寫就是原來的樣子

                                     3 如果要顯示母版盒子中原來的東西,需要

                                               {{block.super}}----寫在哪,原來的内容就放在哪

         4 靜态檔案相關

                   1寫死:<link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.css" target="_blank" rel="external nofollow" >

                   2 用static标簽:

                            {% load static %}

                            <link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.css' %}" target="_blank" rel="external nofollow" >

                   3 用get_static_prefix:

                            {% load static %}

                            <linkrel="stylesheet"href="{%get_static_prefix %}bootstrap-3.3.7-dist/css/bootstrap.css" target="_blank" rel="external nofollow" >

         5 inclusion_tag:傳回html片段

                   1 前面幾步跟标簽和過濾器一樣

                   2 裝飾器:@register.inclusion_tag('inclusiontag.html',name='lqz'),第一個參數是要操作的模闆

                   3 傳回一個字典,字典中的值,可以在inclusiontag中使用

                   4 使用:

                            {%load 你寫的那個py檔案%}

                            {% 函數名字 參數 參數 %}

         6 模型層:

                   單表操作

                            -增加,删,改:兩種方式:queryset對象的方法,book對象的方法

                            -改:需要用save()

                            -get()方法:查詢的資料有且隻有一條,如果多,少,都抛異常

                   單表查詢

                            -<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(price__in=[100,200,300])

                            Book.objects.filter(price__gt=100)

                            Book.objects.filter(price__lt=100)

                            Book.objects.filter(price__gte=100)

                            Book.objects.filter(price__lte=100)

                            Book.objects.filter(price__range=[100,200])

                            Book.objects.filter(title__contains="python")

                            Book.objects.filter(title__icontains="python")

                            Book.objects.filter(title__startswith="py")

                            Book.objects.filter(pub_date__year=2012)

轉載于:https://www.cnblogs.com/zhouhai007/p/10268975.html