Django模板導入和繼承、mysql數據庫導入、單表查詢 1
把公共部分放到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先處理再渲染,處理的過程不分順序先後
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'
}
}
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():從返回結果中剔除重複記錄