學習筆記,僅供參考,有錯必糾
這個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...