Django筆記06

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 }}
相關文章
相關標籤/搜索