Django之知識總結

1. 課程介紹   - 數據類型   - 函數   - 面向對象三大特性:繼承,封裝,多態   - socket:本質傳輸字節;全部網絡通訊都基於socket   - 數據庫設計:單表、FK、M2M (本身做業:本身領域設計表,相親網站)   - 會用:html/css/js/bootstrap2. Http知識      基於Socket      瀏覽器(格式一):      Web服務器(格式一):                  MySQL客戶端(格式二):      MySQL服務端(格式二):      本質:         socket = socket.socket()         socket.connect((ip,端口))         socket.sendall(b'87ljas9802jlksjdf098jlksdf09')                     瀏覽器發送GET請求數據格式:      socket = socket.socket()      socket.connect((ip,端口))      socket.sendall(b'GET /index/?name=xxx&age=11 http1.1\r\nAccept:text/html\r\nAccept-Encoding:gzip, deflate\r\nCookie:UM_distinctid=15d274\r\n\r\n')            request.GET.get('name')         瀏覽器發送POST請求數據格式:      socket = socket.socket()      socket.connect((ip,端口))      socket.sendall(b'POST /index/?name=xxx&age=11 http1.1\r\nAccept:text/html\r\nAccept-Encoding:gzip, deflate\r\nCookie:UM_distinctid=15d274\r\n\r\na1=123&a2=666&a3=xx')            Django加工POST請求的數據,      判斷用戶是否傳遞的是Django能夠向request.POST中解析的數據?讀取請求頭Content-Type: application/x-www-form-urlencoded,那麼就去解析request.body中的值,放置到request.POST中                          a1=123&a2=666&a3=xx                               request.POST.get('name')                          request.body   b"a1=123&a2=666&a3=xx"                                Django加工POST請求的數據:{a1:123,a2:567}                               request.POST   空                          request.body   b"{a1:123,a2:567}"         Http協議      - 請求頭和請求體分割:\r\n\r\n      - 請求體之間:\r\n       - GET無請求體      - 無狀態,短鏈接:socket請求響應斷開      - 請求頭表明的意義         - user-agent:來源         - referer: 防盜鏈         - content-type:請求體是什麼格式?3. Django請求生命週期   wsgiref:      函數版本:         from wsgiref.simple_server import make_server                  def run_server(environ, start_response):            start_response('200 OK', [('Content-Type', 'text/html')])            return [bytes('<h1>Hello, web!</h1>', encoding='utf-8'), ]                             if __name__ == '__main__':            httpd = make_server('127.0.0.1', 8000, run_server) # 請求一旦到來:run_server(..)            httpd.serve_forever()                  類版本:         from wsgiref.simple_server import make_server                  class WsgiHandler(object):                     def __call__(self,environ, start_response):               start_response('200 OK', [('Content-Type', 'text/html')])               return [bytes('<h1>Hello, web!</h1>', encoding='utf-8'), ]                             if __name__ == '__main__':            obj =WsgiHandler()            httpd = make_server('127.0.0.1', 8000, obj) # 請求一旦到來:obj(..)            httpd.serve_forever()                  # 類()   -> __init__         # 類()() -> __call__         生命週期:圖               注意:      渲染工做在Django中執行完成後,字符串返回給瀏覽器。      可是:js,css額外再發一次請求僅獲取靜態文件            4. 問題:   a. TemplateDoesNotExist       - 寫錯誤      - 配置      - 文件夾         b. 靜態文件404      - 寫錯誤      - 配置      - 文件夾            5. Django全部知識點:   知識點:      1. 路由規則         - /index/ func         - /\d+/   func()         - /?P<name(\d+)>/   func()   #有名分組         - include  用來進行路由的分發  url(r'^blog/', include('blog.urls'))                  - 反向生成URL:#這個不太熟悉            - {%url ""%}            - reverse('a1',args=(1,))                  2. 視圖函數:         請求相關:            request:               method  #看函數獲取數據的方法               GET.get/.getlist   用來獲取數據單個數據用get,列表用getlist               POST     #同上               COOKIES               #設置是在三次請求中的第二次返回時設置COOKIES                # obj=redirect("/home/")#給瀏覽器一個cookie在返回時                        # # obj.set_cookie("is_login",True,20)#設置一個cookie,它是一個字典類型的                        # # obj.set_cookie("username",username)                        # return obj                        獲取COOKIES的值                         # is_login=request.COOKIES.get("is_login",None)#判斷這個頁面是否帶着cookie                        刪除COOKIES                        response.delete_cookie("cookie_key",path="/",domain=name)               session               #設置session值                       request.session["is_login"]=True#設置session值                       request.session["USER"]=username                       獲取                       ret=request.session.get("is_login",None)#獲取session裏面的鍵值對                       刪除session                       # del request.session["IS_LOGON"]#這是刪除一個鍵值對                       request.session.flush()這是刪除整條記錄                       Django自帶的認證系統:                       user=auth.authenticate(username=user,password=pwd)#判斷是否在數據庫內                       auth.login(request,user)登錄的語法                       User.objects.create_user(username=user,password=pwd)這是建立新用戶時的語法                       更改密碼操做:               user      request.user獲取當前用戶的名字               body      全部的數據都在body裏               request.FILES   獲取上傳的文件                        響應相關:(三種方法都是字符串)            render            HttpResponse            redirect      3. 模板語言         if for   模板的if和for循環         索引:. 句點符         執行:不加括號自動執行函數                  filter和simple_tag                        4. ORM操做         建立表:            類            字段:INT,CHA,FK,M2M  # 外鍵的關係         操做表:(CURD)增刪改查            13操做(13中操做)               -                         補充:               filter               values                vlaues_list                              all/values/values_list                              __   了不得的下劃線                              正向和反向  #數據的查詢正向與反向         整理:      - 路由對應關係:               - 模板繼承            - 模板標記標籤:for,if,            - 返回:         - HttpResponse         - render         - redirect               - 啓動            - Model類的建立,繼承Model            - migrate            - 模板自定義函數:filter,sample_tag            - cookie和Session            - 基本配置文件:         - 模板         - 靜態文件       - MySQL         和proejct同名的目錄的__init__               - Model中自定義方法:__str__                  - Model操做:         建立:            create            save            bulk_create         13中操做:            filter(nage='xx")            filter(**{age:18})            values('id')            values(*['id','name'])            values_list            last            first             all            distict            exclude            get             update(age=11)            update(**{age:11})            delete()      - 多對多查詢(查詢)               - URL別名,目的:反向生成URL         /detail/(\d+)/  name = a1               from django.url import reverse               url = reverse('a1',args=[6,])                        - Django自帶auth驗證            - 模板             - 分頁            - 分組和聚合 
相關文章
相關標籤/搜索