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
- 模闆導入和繼承
- 模闆導入
把公共部分放到html裡,比如叫left.html
想在哪一個頁面用,就在哪一部分用{%include'left.html'%}
-
- 母版繼承
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先處理再渲染,處理的過程不分順序先後
-
- 自定義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的頁面
- 資料庫的插入
- 配置檔案配置
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'
}
}
-
- __init__檔案設定
import pymysql
#django預設用mysqldb連接配接mysql資料庫,但是mysqldb這個子產品不支援python3.0以後的版本,
#是以用pymysql來替換mysqldb
pymysql.install_as_MySQLdb()
- 單表查詢
- 增
第一種方式(推薦使用):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():從傳回結果中剔除重複記錄