Django part42 限制IP請求次數

2021-10-07 11:18:39 字數 2598 閱讀 5151

學習筆記,僅供參考,有錯必糾

這個blog中,我們將使用中介軟體,實現強制某個ip位址只能向某個位址傳送3次get請求。

在做這個案例之前我們需要先學兩個request的屬性:

現在,我們在主urls.py中建立路由:

urlpatterns =

[ re_path(r'^admin/'

, admin.site.urls)

, re_path(r'^testlimit/$'

,views.test_limit)

,]

在主檢視模組中增加檢視函式:

"我是測試頁面... ..."

)建立自動以中間鍵:

class

visitlimit

(middlewaremixin)

:'''此中介軟體限制乙個ip位址對應的訪問/testlimit/的次數不能改過3次,超過後禁止使用'''

visit_times =

# 此字典用於記錄客戶端ip位址有訪問次數

defprocess_request

(self, request)

: ip_address = request.meta[

'remote_addr'

]# 得到ip位址

ifnot re.match(

'^/testlimit/$'

, request.path_info)

:return

none

#繼續請求

times = self.visit_times.get(ip_address,0)

print

("ip:"

, ip_address,

'已經訪問過'

, times,

'次!:'

'你已經訪問過'

+str

(times)

+'次,禁止再次訪問!'

)

將我們剛建立的中間鍵進行註冊:

middleware =

['django.middleware.security.securitymiddleware'

,'django.contrib.sessions.middleware.sessionmiddleware'

,'django.middleware.common.commonmiddleware'

,# 'django.middleware.csrf.csrfviewmiddleware',

'django.contrib.auth.middleware.authenticationmiddleware'

,'django.contrib.messages.middleware.messagemiddleware'

,'django.middleware.clickjacking.xframeoptionsmiddleware'

,'mymiddleware.checklogin.mymiddleware'

,'mymiddleware.checklogin.visitlimit'

,]

向發起請求:

檢視cmd介面:

ip: 127.0.0.1 已經訪問過 0 次!: /testlimit/

再訪問2次,並檢視cmd介面:

ip: 127.0.0.1 已經訪問過 1 次!: /testlimit/

ip: 127.0.0.1 已經訪問過 2 次!: /testlimit/

當我們第4次向發起請求時,出現如下頁面:

再檢視cmd介面:

ip: 127.0.0.1 已經訪問過 3 次!: /testlimit/

django part1(2)建立專案

執行下面的命令來建立乙個新的 django 專案 django admin startproject myproject 命令列工具django admin會在安裝django的時候一起自動安裝好。執行了上面的命令以後,系統會為django專案生成基礎資料夾結構。現在,我們的myproject目錄結...

Django part18 靜態檔案

學習筆記,僅供參考,有錯必糾 對於靜態檔案的配置,我們需要在settings.py中進行下面兩項更改。開啟settings.py模組,確認該檔案底端是否有以下 沒有則增加以下 static url static 之後,我們便可以用訪問名為 jpg的靜態檔案了。在這裡,我們將配置靜態檔案在伺服器端的儲...

Django part25 字段查詢

學習筆記,僅供參考 字段查詢是指指定sql語句中利用where子句進行查詢,字段查詢需要通過queryset的filter exclude 和 get 方法的關鍵字引數指定。models.author.objects.filter age gt 20 對應的sql語句 select where ag...