django——面試題(已工作,暫停更新)


談談你對HTTP協議的認識。

什么是協議?

  協議,是指通信的雙方,在通信流程或內容格式上,共同遵守的標准。

什么是http協議?

  http協議,是互聯網中最常見的網絡通信標准。

http協議的特點

  ①通信流程:斷開式(無狀態)

        斷開式:http協議每次響應完成后,會斷開與客戶端的連接

        無狀態:由於服務器斷開了之前的連接,就無法知曉連接間的關系

  ②內容格式:消息頭和消息體
View Code

列舉Http請求中常見的請求方式

HTTP請求的方法:
HTTP/1.1協議中共定義了八種方法(有時也叫“動作”),來表明Request-URL指定的資源不同的操作方式
 
1、OPTIONS
返回服務器針對特定資源所支持的HTTP請求方法,也可以利用向web服務器發送‘*’的請求來測試服務器的功能性
2、HEAD
向服務器索與GET請求相一致的響應,只不過響應體將不會被返回。這一方法可以再不必傳輸整個響應內容的情況下,就可以獲取包含在響應小消息頭中的元信息。
3、GET
向特定的資源發出請求。它本質就是發送一個請求來取得服務器上的某一資源。資源通過一組HTTP頭和呈現數據(如HTML文本,或者圖片或者視頻等)返回給客戶端。GET請求中,永遠不會包含呈現數據。
4、POST
向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改。 Loadrunner中對應POST請求函數:web_submit_data,web_submit_form
5、PUT
向指定資源位置上傳其最新內容
6、DELETE
請求服務器刪除Request-URL所標識的資源
7、TRACE
回顯服務器收到的請求,主要用於測試或診斷
8、CONNECT
HTTP/1.1協議中預留給能夠將連接改為管道方式的代理服務器。
注意:
1)方法名稱是區分大小寫的,當某個請求所針對的資源不支持對應的請求方法的時候,服務器應當返回狀態碼405(Mothod Not Allowed);當服務器不認識或者不支持對應的請求方法時,應返回狀態碼501(Not Implemented)。
2)HTTP服務器至少應該實現GET和HEAD/POST方法,其他方法都是可選的,此外除上述方法,特定的HTTP服務器支持擴展自定義的方法。
View Code

get請求和post請求的區別

 區別:

    get請求無消息體,只能攜帶少量數據

    post請求有消息體,可以攜帶大量數據

  攜帶數據的方式:

    get請求將數據放在url地址中

     post請求將數據放在消息體中

GET請求請提交的數據放置在HTTP請求協議頭中,而POST提交的數據則放在實體數據中; 
GET方式提交的數據最多只能有1024字節,而POST則沒有此限制。
View Code

簡述MVC模式和MVT模式

MVC
Web服務器開發領域里著名的MVC模式,所謂MVC就是把Web應用分為模型(M),控制器(C)和視圖(V)三層,他們之間以一種插件式的、松耦合的方式連接在一起,模型負責業務對象與數據庫的映射(ORM),視圖負責與用戶的交互(頁面),控制器接受用戶的輸入調用模型和視圖完成用戶的請求。

MTV
Django的MTV模式本質上和MVC是一樣的,也是為了各組件間保持松耦合關系,只是定義上有些許不同,Django的MTV分別是值:

M 代表模型(Model): 負責業務對象和數據庫的關系映射(ORM)。
T 代表模板 (Template):負責如何把頁面展示給用戶(html)。
V 代表視圖(View): 負責業務邏輯,並在適當時候調用Model和Template。
除了以上三層之外,還需要一個URL分發器,它的作用是將一個個URL的頁面請求分發給不同的View處理,View再調用相應的Model和Template
View Code

簡述Django請求生命周期

簡述什么是FBV和CBV

FBV(function base views) 就是在視圖里使用函數處理請求。
CBV(class base views) 就是在視圖里使用類處理請求。

Python是一個面向對象的編程語言,如果只用函數來開發,有很多面向對象的優點就錯失了(繼承、封裝、多態)。所以Django在后來加入了Class-Based-View。可以讓我們用類寫View。這樣做的優點主要下面兩種:

提高了代碼的復用性,可以使用面向對象的技術,比如Mixin(多繼承)
可以用不同的函數針對不同的HTTP方法處理,而不是通過很多if判斷,提高代碼可讀性
View Code

談一談你對ORM的理解

ORM是“對象-關系-映射”的簡稱。
MVC或者MVC框架中包括一個重要的部分,就是ORM,它實現了數據模型與數據庫的解耦,即數據模型的設計不需要依賴於特定的數據庫,通過簡單的配置就可以輕松更換數據庫,這極大的減輕了開發人員的工作量,不需要面對因數據庫變更而導致的無效勞動
View Code

 

 

rest_framework 認證組件的流程

什么是中間件並簡述其作用

django中怎么寫原生SQL

F和Q的作用

values和value_list區別

如何使用django orm批量創建數據

Django中的請求生命周期

http訪問流程

命令migrate 和makemigrations的差別

視圖函數中,接收的請求對象常用方法和屬性有哪些

常用視圖響應的方式是什么?

HTTP響應常見狀態碼分類

路由匹配原則是什么?

緩存系統類型有哪些

解決跨域的常用方式是什么?

信號的作用是什么?

Django的Model的繼承有幾種形式,分別是什么

Django中查詢queryset時什么情況下用Q

Django中想驗證表單提交是否格式正確需要用到Form中的哪個函數

orm如何取消級聯

Django中如何讀取和保存session,整個session的運行機制是什么

簡述Django對http請求的執行流程

Django中當用戶登錄到A服務器進入登陸狀態,下次被nginx代理到B服務器會出現什么影響

跨域請求Django是如何處理的

查詢集的兩大特性?什么是惰性執行

查詢集返回的列表過濾器有哪些

如何獲取django urlpatterns里面注冊的所有url?

django路由系統中include是干嘛用的?

django2.0中的path與django1.xx里面的url有什么區別?

urlpatterns中的name與namespace有什么作用?你是如何使用的?

如何根據urlpatterns中的name反向生成url,這樣反向生成url的方式有幾種?

如何給一個字段設置一個主鍵?

blank=True與null=True有什么區別?

如何設置一個帶有枚舉值的字典?

DateTimeField類型中的auto_now與auto_now_add有什么區別

values()與values_list()有什么區別?

selected_related與prefetch_related有什么區別?

當刪除一個外鍵的時候,如何把與其關聯的對應關系刪除

class Meta中的元信息字段有哪些

多對多關聯的表,如何插入數據?如何刪除數據?如何更新數據?

django的M2M關系,如何手動生成第三張表?

如何使用原生mysql?

在Django中,服務端給客戶端響應信息有幾種方式?分別是什么?

在視圖函數中,常用的驗證裝飾器有哪些?

如何給一個視圖函數加上緩存?

web框架的本質是什么?

什么是MVC、什么是MTV?

創建Django工程、Django app、以及運行的命令

Django App的目錄結構

簡述一下Django聲明周期

Django 獲取用戶前端請求數據的幾種方式

描述下 自定義simple_tag

什么是Cookie、如何獲取、設置Cookie

什么是session,與cookie的對比、設置、獲取、清空session

什么是CSRF,及防范方式

django 中間件生命周期

get請求和post請求的區別

圖書管理系統的表結構是怎么設計的?

圖書管理系統路由系統你用到了name了嗎? 為什么要使用呢?

圖書管理系統的模板你是怎么用的? 重復的代碼怎么解決?

MVC和MTV分別是什么?

WSGI / uwsgi/ uWSGI區分

如何使用django加密

解釋blank和null

QueryDict和dict區別


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM