Python web開發之旅(二)

### 什麼是表單:

表單是HTML中用於提交數據給服務器的一個標籤,所有的表單元素(input/textarea/button...)都要放在form標籤當中.然後有以下參數:

1. `form`的`method`參數用於設置表單的提交方式,默認使用`POST`.

2. `action`用於設置表單的提交url,如果不寫或者保持空字符串,那麼將使用當前的URL.

### GET和POST:

1. `GET`:GET如其名,是從服務器獲取數據,不會更改服務器的狀態和數據,在URL中攜帶參數發送給服務器。

2. POST則是將一定量的數據發送給服務器,一般會更改服務器的數據。

3. POST方法的參數不能在URL當中看到,他是通過body參數傳遞給服務器的,所以相對GET方法直接能在URL當中看到傳遞的參數,顯得更加安全一些.當然,也不能簡單的判定POST方法比GET方法更安全,要使網站保持安全,需要做更多的安全處理.

### HttpRequest:

1. request.scheme:網絡請求的協議,一般是http和https

2. request.body:http請求中傳遞的原始數據,是一個byte類型的string,如果要處理form表單上傳上來的數據,應該使用request.POST,這個處理得比較好。

3. request.path:當前請求的URL路徑,但是不包括scheme和域名,比如有http://www.myblog.com/blog/1。那麼返回的將是/blog/1。會去除掉http和www.myblog.com

4. request.method:當前這個請求訪問方法,一般為GET和POST,例如可以通過以下方式進行判斷:

* request.GET:一個QueryDict的類字典類型的對象,可以通過訪問字典的方式進行訪問裡面的值,裡面的值是通過GET請求傳遞進來的參數。

* request.POST:同request.GET,但是是保存了通過POST請求傳遞上來的參數。注意,這個POST裡面不包含上傳的文件信息。如果要訪問上傳的文件,請使用request.FILES。

5. request.COOKIES:一個字典類型,包含了所有的cookie信息,key和value都是字符串。

6. request.META:存儲所有請求的頭部信息。

7. request.session:返回一個QueryDict的類字典類型的集合,這個屬性要有效,必須添加SessionMiddleware這個中間件。

8. request.is_secure():如果是HTTPS的,那麼返回True,否則返回False

9. request.is_ajax():這個請求是否是通過XMLHttpRequest進行訪問的。**他的實現原理就是去request.META中查找HTTP_X_REQUESTED_WITH,如果是XMLHttpRequest,那麼將返回True,否則返回False。**一般在第三方庫如jQuery中使用ajax方法都設置了這個值,如果自己手動寫XMLHttpRequest,那麼需要自己添加這個header,is_ajax這個方法才能生效。

### HttpResponse對象:

1. HttpResponse.__init__(content=’’,content_type=None,status=200,reason=None,charset=None)構造方法:

content:代表要發送給客戶端的內容。

content_type:代表發送給客戶端的內容類型,默認是“text/html;charset=utf-8”。

charset:響應體的編碼,如果沒有指定,則會使用content_type中設置的charset。

2. set_cookie(key,value=’’,max_age=None,expires=None,path=’/’,domain=None,secure=None,httponly=False)

設置cookie的方法。

key:cookie的key。

value:cookie的value。

max_age:cookie最大的過期時間。

expires:cookie的過期時間和日期。

path:針對哪個目錄下有效果。

domain:域名,如果你想跨域使用cookie,必須設置這個值,比如domain=”.lawrence.com”,那麼www.lawrence.com和blogs.lawrence.com和calendars.lawrence.com都可以訪問到這個cookie。

httponly:如果設置為True,客戶端的js代碼將不能訪問到cookie。

3. delete_cookie(key,path=’/’,domain=None):刪除cookie。


分享到:


相關文章: