2014-03-03 180 views
1

我知道sessioncookies是如何工作的。我在django上做了一個在線課程,其中sessioncookie中設置語言偏好的功能寫在views.py中。我不明白爲什麼cookie設置在response上,而session設在request。教練提到它在PHP或任何其他web framework中的作用相同。爲什麼cookie被設置爲響應,但請求中的會話?

但他沒有解釋爲什麼?有人能解釋爲什麼嗎?

下面是函數:

def language(request,language=「en-us」): 
    response=HttpResonse(「setting language to %s」 %language) 

    response.set_cookie(‘lang’,language) 
    request.session[‘lang’]=language 

    return response 

回答

0

我就說說Java,但它應是在Django相似。會話屬性在servlet和jsp中以類似於請求參數的方式訪問。你可以把它看作服務器端存儲的請求參數。有些框架如JSF甚至使用請求範圍來存儲會話變量。所以基本上你可以看作會話作爲請求裝飾器,它將值存儲在Web容器中。

+0

請求參數必須在客戶端而不是服務器端正確? – eagertoLearn

+0

請求參數是HTTP請求的屬性,通常用URL編碼或傳入請求正文。他們可以來自或鏈接構建的manualy(URL部分後面?)。會話屬性被網站開發者用於存儲會話,通常是用戶令牌,eshop購物車內容等。服務器通過cookie將會話請求與會話相關聯,或者它也可以在URL參數中編碼。 –

+0

是的,這是正確的。但我不清楚,如何會議如何運作的請求和餅乾上的迴應,我的問題上面.. – eagertoLearn

相關問題