1. 程式人生 > >前期知識點回顧

前期知識點回顧

模板 init htm 生成 自定義標簽 不同 調用方法 erro 模板繼承

內容回顧
1、可叠代對象、叠代器、生成器、裝飾器有什麽區別?
  可叠代對象:內部實現了__iter__方法,是一個叠代器
  叠代器:內部實現了__iter__和__next__方法,可以進行for循環
  生成器:函數內部有yield的就是生成器,生成器也有一個__next__方法,它的本質是一個叠代器。
  生成器有兩大功能:1、生成 2、叠代
  裝飾器:在函數執行之前或者函數執行之後要擴展的功能,裝飾器是用閉包實現的
2、面向對象的方法?面向對象有三種方法:
  實例方法:def func(self):pass 用對象去調用方法
  類方法:cls是當前操作的類名
      @classmethod


      def func(cls):pass
  靜態方法:
      @staticmethod
      def func():pass
  類方法和靜態方法的區別:
    類方法:類方法傳一個cls參數
    靜態方法:靜態方法不用傳參數
    相同點:都可以用用類去調用方法
3、類裏面的字段有兩種:
    靜態字段
    動態字段
    class A:
      s ="aaa" 靜態字段
      def __init__(self):
        self.name = name 對象字段
4、屬性:

@property
def func(self):   pass @fee.setter def fee(self):   pass @fee.deltter def fee(self):   pass 吧一個方法當做屬性來調用 因為屬性不能被修改,可以用@fee.setter

5、提高查詢數據庫性能相關的有什麽方式?
  加索引的方式:索引就是加速查詢 :通過不斷的縮小數據的範圍篩選出最終想要的結果
  索引又分為幾大類?
  索引分類
    1.普通索引index :加速查找
    2.唯一索引
      主鍵索引:primary key :加速查找+約束(不為空且唯一)
      唯一索引:unique:加速查找+約束 (唯一)


    3.聯合索引
      -primary key(id,name):聯合主鍵索引
      -unique(id,name):聯合唯一索引
      -index(id,name):聯合普通索引
    4.全文索引fulltext :用於搜索很長一篇文章的時候,效果最好。
    5.空間索引spatial :了解就好,幾乎不用
6、如何命中索引?
  創建索引,未命中
  命中:相當於精確查詢。。。in,like就不命中
  排序條件為索引,則select字段必須也是索引字段,否則無法命中

6、django的生命周期
  請求先到wsgi---中間件---如果驗證通過就走到路由系統----視圖函數(從數據庫中取到數據,在模板中渲染)
7、中間件做過什麽?
  用戶登錄
  權限管理
  crsf
  session
8、在路由系統url上一定要記得加上起始終止符
9、視圖:request請求都拿到了些什麽?
  request.POST POST裏面可能拿不到數據,但是在body中一定會拿到數據
  request.body
  request.GET
  request.path_info
  request.method
  request.session
  request.cookies
  ....
10、Form驗證
  創建規則:
  類:
    字段:    

        required=True,
        min_length=3,
        max_length=18,
        error_messages={
            ‘required‘: ‘密碼不能為空‘,
            ‘min_length‘: ‘密碼長度不能小於3‘,
            ‘max_length‘: ‘密碼長度不能大於18‘,
            ‘invalid‘: ‘密碼格式錯誤‘,
        },

      validators=[RegexValidator(‘\d+‘,‘只能是數字‘) ]
11、數據庫操作
  13個API操作
    all,filter,get,values,values_list,fast,last,distinct,reverse,include,order_by, exist,count
    另加2個:only、refer
    FK ManyToMany
12、模板
  自定義過濾器和標簽
  1、常見一個templatetags文件夾
  2、在該文件夾中隨便創建一個py文件
  3、在使用自定義simple_tag和filter的html文件中導入之前創建的 my_tags.py
  3、{% load my_tags %} 
  自定義過濾器函數的參數只能兩個,可以進行邏輯判斷
  自定義標簽無參數限制,不能進行邏輯判斷

13. Session和Cookie是什麽?什麽區別和關系?Session原理?
由於http無狀態,當請求進來的時候不會保存狀態,當每次訪問的時候就不知道是誰進來了,這就引出了cookie
cookie的原理:
  服務器產生內容,瀏覽器收到請求後保存在瀏覽器;
  當瀏覽器再次訪問時,瀏覽器會自動帶上cookie,
  這樣服務器就能通過cookie的內容來判斷這個是“誰”了。
session 的原理:
  session會保存在服務器,這樣比較安全
總結而言:cookie彌補了http無狀態的不足,讓服務器知道來的人是“誰”;
     但是cookie以文本的形式保存在本地,自身安全性較差;
     所以我們就通過cookie識別不同的用戶,對應的在session裏保存私密的信息以及超過4096字節的文本。

另外,上述所說的cookie和session其實是共通性的東西,不限於語言和框架
14. 什麽是模板繼承,好處是什麽?

  模板繼承{% extends "base.html" %}

  好處:縮減代碼


前期知識點回顧