3. Post and Get
Django後端的工作流程
- 使用者發起http資源請求--->
- Urls.py 進行模式匹配--->
- 對映到相應的view函式邏輯---->
- 用資料渲染網頁模板返回給使用者,或者直接跳轉到相應的網頁。
Post and Get
超文字傳輸協議(HTTP)的設計目的是保證客戶機與伺服器之間的通訊。
HTTP 的工作方式是基於TCP/IP,客戶機與伺服器之間的請求-應答協議。
HTTP包含GET, POST, PUT, DELETE等等方法。常用的就是GET,POST。
Post 和 Get在本質上是沒有區別的,都是一個TCP/IP的連結。
TCP協議通過三次握手,建立埠到埠的,可靠的、基於位元組流(報文段)的連線;IP通過域名解析,路由定址,建立主機之間的交流。通過他們的配合,從而建立了HTTP的基礎。
我們給GET一個定義,你的引數只能放在url中。
同樣,我們給POST一個定義,你的引數(資料)放在Request body中。
那麼各大瀏覽器就會針對不同請求做不同的處理,來提高效率。
POST:向指定的資源提交要被處理的資料
POST 請求不會被快取
POST 請求不會保留在瀏覽器歷史記錄中
POST 不能被收藏為書籤
POST 請求對資料長度沒有要求GET:從指定的資源請求資料
GET 請求可被快取
GET 請求保留在瀏覽器歷史記錄中
GET 請求可被收藏為書籤
GET 請求不應在處理敏感資料時使用
GET 請求有長度限制
GET 請求只應當用於取回資料
這兩種方式還有一個區別,GET只傳送一次請求,POST則大多數情況下(這也取決於瀏覽器)傳送兩次,一次報頭,一次資料。
回到Django
- Get作為一種method,可以用於Form,也可以用於<a>的href上。
Get將表單中資料的按照variable=value的形式,新增到action所指向的URL後面,並且兩者使用“?”連線,而各個變數之間使用“&”連線。
用在Form上時,資料就會被新增在url上返回給伺服器
<form class="form-inline" action="{% url 'display:search' %}" method="get">
{% csrf_token %}
<input class="form-control" type="text" placeholder="Search" name="keywords">
<button class="btn btn-success" type="submit">搜尋全站</button>
</form>
用在<a>的href時,href屬性值就是我們返回給伺服器的url。
<div class="user-name"><a href="{% url 'display:personal_info' %}">{{ request.session.user_name}}</a></div>
這裡的url就是該網頁的位址列裡的地址。
如果Form不明確說明使用get 還是Post,則預設get
Attention: 只要使用了Form這個標籤,就可以用request去獲取引數:
name=request.GET.get('name1') # 獲取引數值
否則就要通過正規表示式去解析url,得到data,將其作為函式引數傳遞到view的函式裡。
<a class="nav-link" href="{% url 'display:category' '程式設計師' %}">IT</a>
url(r'^(?P<category>[\u4e00-\u9fa5]+)/$', views.category, name='category')
def category(request, category):
news = Item.objects.order_by("collect_time")
daily_news = news.order_by('collect_time').filter(category=category)[:6]
context = {
'daily_news': daily_news,
}
return render(request, 'display/category.html', context)
- Post作為一種傳輸資料的method,用在Form上。Post是將表單中的資料放在form的資料體中,按照變數和值相對應的方式,傳遞到action所指向URL。
區別:
request.POST['sth']會返回KeyError如果這裡沒有該引數
request.POST.get('sth')會返回None如果這裡沒有該引數,而且它可以新增一個預設值作為返回。
相關文章
- Get/Post
- jquery GET POSTjQuery
- About post and get
- GET與POST區別
- curl 簡單post get
- What is the difference Put and Post and Get?
- get和post區別
- form&method【POST~GET】ORM
- Tomcat、http、get/postTomcatHTTP
- GET 與 POST 的區別
- GET和POST的區別?
- GET和POST的區別
- GET 和 POST 的區別
- POST 和 GET 的區別
- post與get的區別
- Post,Get介面傻傻分不清?
- jQuery – AJAX get() 和 post() 方法jQuery
- okhttp get post 使用原始碼HTTP原始碼
- get與post的區別?
- HTTP方法_GET 對比 POSTHTTP
- Ajax Post 與 Get 例項
- [後臺技術]Post/Get
- GET與POST的真正區別
- POST與GET請求區別
- post、get的區別總結
- 筆記:Curl 簡單 post + get筆記
- Python探析get和post方法Python
- PHP中GET與POST變數PHP變數
- 面試之 get 和 post 區別面試
- HTTP Get,Post請求詳解HTTP
- method=post/get區別記錄
- Get和Post請求詳解
- Get和Post、冪等、淨荷
- 再看GET與POST的區別
- jQuery Ajax get post 方法詳解jQuery
- java傳送GET和post請求Java
- get與post的請求區別
- go對get、post請求封裝Go封裝