# 第一節:限制請求method
# Django限制請求method
## 常用的請求method:
1. GET請求:GET請求一般用來向服務器索取數據,但不會向服務器提交數據,不會對服務器的狀態進行更改。比如向服務器獲取某篇文章的詳情。
2. POST請求:POST請求一般是用來向服務器提交數據,會對服務器的狀態進行更改。比如提交一篇文章給服務器。
## 限制請求裝飾器:
`Django`內置的視圖裝飾器可以給視圖提供一些限制。比如這個視圖只能通過`GET`的`method`訪問等。以下將介紹一些常用的內置視圖裝飾器。
1. `django.http.decorators.http.require_http_methods`:這個裝飾器需要傳遞一個允許訪問的方法的列表。比如只能通過`GET`的方式訪問。那么示例代碼如下:
```
<pre class="calibre12">```
<span class="hljs-keyword">from</span> django.views.decorators.http <span class="hljs-keyword">import</span> require_http_methods
<span class="hljs-class"> @require_http_methods(["GET"])</span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">my_view</span><span class="hljs-params">(request)</span>:</span>
<span class="hljs-keyword">pass</span>
```
```
2. `django.views.decorators.http.require_GET`:這個裝飾器相當于是`require_http_methods(['GET'])`的簡寫形式,只允許使用`GET`的`method`來訪問視圖。示例代碼如下:
```
<pre class="calibre12">```
<span class="hljs-keyword">from</span> django.views.decorators.http <span class="hljs-keyword">import</span> require_GET
<span class="hljs-class"> @require_GET</span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">my_view</span><span class="hljs-params">(request)</span>:</span>
<span class="hljs-keyword">pass</span>
```
```
3. `django.views.decorators.http.require_POST`:這個裝飾器相當于是`require_http_methods(['POST'])`的簡寫形式,只允許使用`POST`的`method`來訪問視圖。示例代碼如下:
```
<pre class="calibre12">```
<span class="hljs-keyword">from</span> django.views.decorators.http <span class="hljs-keyword">import</span> require_POST
<span class="hljs-class"> @require_POST</span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">my_view</span><span class="hljs-params">(request)</span>:</span>
<span class="hljs-keyword">pass</span>
```
```
4. `django.views.decorators.http.require_safe`:這個裝飾器相當于是`require_http_methods(['GET','HEAD'])`的簡寫形式,只允許使用相對安全的方式來訪問視圖。因為`GET`和`HEAD`不會對服務器產生增刪改的行為。因此是一種相對安全的請求方式。示例代碼如下:
```
<pre class="calibre12">```
<span class="hljs-keyword">from</span> django.views.decorators.http <span class="hljs-keyword">import</span> require_safe
<span class="hljs-class"> @require_safe</span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">my_view</span><span class="hljs-params">(request)</span>:</span>
<span class="hljs-keyword">pass</span>
```
```
- Introduction
- 第一章:學前準備
- 第一節:虛擬環境
- 第二節:準備工作
- 第三節:Django介紹
- 第四節:URL組成部分
- 第二章:URL與視圖
- 第一節:第一個Django項目
- 第二節:視圖與URL分發器
- 第三章:模板
- 第一節:模板介紹
- 第二節:模板變量
- 第三節:常用標簽
- 第四節:常用過濾器
- 第五節:自定義過濾器
- 第七節:模版結構優化
- 第八節:加載靜態文件
- 第四章:數據庫
- 第一節:MySQL相關軟件
- 第二節:數據庫操作
- 第三節:ORM模型
- 第四節:模型常用字段
- 第五節:外鍵和表關系
- 第六節:增刪改查操作
- 第七節:查詢操作
- 第八節:QuerySet API
- 第九節:ORM模型遷移
- 第十節:ORM作業
- 第十一節:ORM作業參考答案
- 第十二節:Pycharm連接數據庫
- 第五章:視圖高級
- 第一節:限制請求method
- 第二節:頁面重定向
- 第三節:HttpRequest對象
- 第四節:HttpResponse對象
- 第五節:生成CSV文件
- 第六節:類視圖
- 第七節:錯誤處理
- 第六章:表單
- 第一節:表單概述
- 第二節:用表單驗證數據
- 第三節:ModelForm
- 第四節:文件上傳
- 第七章:cookie和session
- 第八章:上下文處理器和中間件
- 第一節:上下文處理器
- 第二節:中間件
- 第九章:安全
- 第一節:CSRF攻擊
- 第二節:XSS攻擊
- 第三節:點擊劫持攻擊
- 第四節:SQL注入
- 第十章:信號
- 第一節:什么是信號
- 第十一章:驗證和授權
- 第一節:概述
- 第二節:用戶對象
- 第三節:權限和分組
- 第十二章:Admin系統
- 第十三章:Django的緩存
- 第十四章:memcached
- 第十五章:Redis