1.如果禁止某個ip訪問某個檢視函式,在檢視函式中加判斷
# exclude_ips=['127.0.0.1']
@blocked_ips
def test_middelware(request):
# userip = request.meta['remote_addr']
# print(userip)
# #禁止某些ip訪問
url(r'^test_middleware$', views.test_middelware),
4.如果有多個函式都要這個限制,也可以使用裝飾器,然後像上面那樣給每乙個要限制的檢視新增裝飾器
def blocked_ips(view_func):
userip = request.meta['remote_addr']
print(userip)
#禁止某些ip訪問
# 中介軟體類
class blockedipsmiddleware(middlewaremixin):
exclude_ips = ['127.0.0.1']
# 中介軟體函式
def process_view(self, request, view_func, *view_args, **view_kwargs):
'''檢視函式呼叫之前呼叫這個'''
userip = request.meta['remote_addr']
print(userip)
# 禁止某些ip訪問
6.在專案的setting.py裡面的中介軟體配置中註冊中介軟體類
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',
'booktest.middleware.blockedipsmiddleware',#註冊中介軟體類
]
7.注釋掉所有的裝飾器,再次訪問,發現都會出現forbidden
13 2 7 中介軟體
中介軟體顧名思義,是介於request與response處理之間的一道處理過程,相對比較輕量級,並且在全域性上改變django的輸入與輸出。因為改變的是全域性,所以需要謹慎實用,用不好會影響到效能。如果你想修改請求,例如被傳送到view中的httprequest物件。或者你想修改view返回的htt...
21 中介軟體
一 中介軟體的定義 1.中介軟體是django請求 響應處理的鉤子框架,它是乙個輕量級的 低階的 外掛程式 系統,用於全域性改變django的輸入或輸出 2.中介軟體以類的形式體現 3.每個中介軟體元件負責做一些特定的功能,例如django包含乙個中介軟體元件 authenticationmiddl...
07 中介軟體
5 獲取的資料會交給最後乙個中介軟體的process response方法處理,然後依次向前面的中介軟體process response 6 在任一中介軟體的process request和process view方法中有返回值就會直接返回給process response 3 檢視函式 4 中介軟...