天天看點

Django模闆導入和繼承、mysql資料庫導入、單表查詢,第一百零八天

Django模闆導入和繼承、mysql資料庫導入、單表查詢

Django模闆導入和繼承、mysql資料庫導入、單表查詢 1

1. 模闆導入和繼承 2

1.1. 模闆導入 2

1.2. 母版繼承 2

1.3. 自定義 inclusion_tag 3

2. 資料庫的插入 3

2.1. 配置檔案配置 3

2.2. __init__檔案設定 4

3. 單表查詢 4

3.1. 增 4

3.2. 查 4

Django模闆導入和繼承、mysql資料庫導入、單表查詢,第一百零八天
  1. 模闆導入和繼承
    1. 模闆導入

把公共部分放到html裡,比如叫left.html

想在哪一個頁面用,就在哪一部分用{%include'left.html'%}

    1. 母版繼承

1.寫一個母版base.html

2.要更改的地方

{%block base%}

母版的盒子裡也可以寫東西

{%endblock%}

3.調用:

重新建立一個頁面第一行寫入{%extends'base.html'}

{%block base%}

自己的東西

{%endblock%}

4.調用的時候使用母版内的内容使用{{block.super}},它放在哪,原來母版的東西就會渲染在哪

{%block base%}

{{block.super}}

自己的東西

{%endblock%}

5.如果不繼承盒子,它會用母版原來的内容,如果繼承了,繼承的内容會覆寫母版的内容,即如果繼承的内容為空腹,則母版的内容會被覆寫成空白.

6.盒子的繼承與盒子繼承的無關,因為盒子繼承了會被Django先處理再渲染,處理的過程不分順序先後

    1. 自定義inclusion_tag

1.先去setting裡面把app名字配置上

2.再去app目錄下建立一個templatetags子產品

3.寫py檔案(my_test.py)

4.from django import template

5.register=template.Library()

[email protected]_tag('test.html')

def my_inclusion(n):

data=[]

for i in range(n):

data.sppend('第%s行'%i)

return('datea':data)

7.寫test.html頁面

<ul>

{%for choice in data%}

<li>{{choice}}</li>

{%endfor%}

</ul>

8.{%load my_test%}

9.{%my_inclusion 10%}#它回傳回html的頁面

  1. 資料庫的插入
    1. 配置檔案配置

DATABASES={

#'default':{

#'ENGINE':'django.db.backends.sqlite3',

#'NAME':os.path.join(BASE_DIR,'db.sqlite3'),

#}

'default':{

'ENGINE':'django.db.backends.mysql',

'NAME':'資料庫名字',

'HOST':'127.0.0.1',

'PORT':3306,

'USER':'root',

'PASSWORD':'123'

}

}

    1. __init__檔案設定

import pymysql

#django預設用mysqldb連接配接mysql資料庫,但是mysqldb這個子產品不支援python3.0以後的版本,

#是以用pymysql來替換mysqldb

pymysql.install_as_MySQLdb()

  1. 單表查詢

第一種方式(推薦使用):book=Book.objects.create(name=name)

第二種方式:book=Book(name=name)

boo.save()

1.all():查詢所有結果

2.filter(**kwargs):它包含了與所給篩選條件想比對的對象

3.get(**kwargs):傳回與所給篩選條件相比對的對象,傳回結果有且隻有一個,如果符合篩選條件的對象超過一個或者沒有都會抛出錯誤.

4.exclude(**kwargs):它包含了與所給篩選條件不比對的對象.

5.order_by(*field):對查詢結果排序,('-id')會進行反向排序

6.reverse():對查詢結果反向排序,基于order_by的基礎上

7.count():傳回資料庫中比對查詢(QuerySet)的對象數量

8.first():傳回第一條記錄

9.last():傳回最後一條記錄

10.exists():如果QuerySet包含資料,就傳回True,否則傳回False

11.values(*field):傳回一個ValueQuerySet一個特殊的QuerySet,運作後得到的并不是一系列model的執行個體化對象,而是一個可疊代的字典序列

12.values_list(*field):它與values()非常相似,它傳回的是一個元組序列,values傳回的是一個字典序列

13:distinct():從傳回結果中剔除重複記錄