chociehtml
choices = ((1,"男"),(2,"女"),(3,"保密"))
gender = models.IntegerField(choices=choices)
user_obj.get_gender_display()
# 獲取具備choice屬性的字段對應的解釋,固定用法
# get_字段_display()
MTV前端
Django是MTV模式的框架ajax
M:modelsjson
T:templates後端
V:views瀏覽器
MVCapp
M:models框架
V:views異步
C:controller(url + views)編碼
本質上MTV就是MVC
ManyToManyField
多對多關係三種建立方式
第一種ManyToManyField()自動建立第三張表
第二種純手動
class Book(models.Model):
name = models.CharField(max_length=32)
class Author(models.Model):
name = models.CharField(max_length=32)
class Book_to_Author(models.Model):
book = models.ForeignKey(to="Book")
author = models.ForeignKey(to="Author")
第三種與自動建立相同,能夠本身增長額外的字段
class Book(models.Model):
name = models.CharField(max_length=32)
authors = models.ManyToManyField(to="Author",through="Book_to_Author",through_fields=("book","author"))
class Author(models.Model):
name = models.CharField(max_length=32)
class Book_to_Author(models.Model):
booke = models.ForeignKey(to="Book")
author = models.ForeignKey(to="Author")
Ajax
前端朝後端發送請求的方式
a標籤href GET請求
瀏覽器輸入ulr GET請求
form表單 GET/POST請求
Ajax GET/POST請求
前端朝後端發送數據的編碼格式
contentType參數,用來標識前端反射數據的編碼格式
Urlencoded:是form表單和ajax提交數據默認的編碼格式(request.POST獲取)
fromdata:文件提交編碼(request.FILES獲取)
appliction/json:json格式(request.body)
ajax特色:
1 異步提交 2 局部刷新
ajax與form表單的不一樣點
1 from表單提交的數據格式只能是urlencoded和formdata,不支持json格式
2 from表單提交數據,頁面刷新
3 ajax局部刷新,異步提交,而且支持發送json格式數據
ajax提交數據必備的參數
url 提交到哪裏
type 提交方式
data 提交的數據
提交後端處理以後的結果 (異步回調)success:function(data){}
ajax提交json格式數據
contentType:"application/json"
使用JSON.stringify包裹數據
編碼格式與數據類型必須一致
ajax提交文件
1 不寫使用內置對象:FormData
2 獲取input框文件對象:$("")[0].files[0]
3 指定兩個參數爲false:
processData:false 讓後端不處理數據
contentType:false 讓後端使用formdata內部數據格式
4 後端用request.FILES獲取文件對象
批量插入數據
li = []
for i in range(1000):
li.append(models.Book(name="第%s本書"%i))
models.Book.objects.bulk_create(li)
分頁器
固定用法,獲取數據當前想訪問的頁面page = request.GET.get('page',1)實例化分頁器對象page_obj = Pagination(current_page=page,all_count=book_queryset.count())對總數據對象進行切片page_querset = book_queryset[page_obj.start:page_obj.end]前端使用{{ page_obj.page_html|safe }}