2015-09-04 57 views
2

我發現這些cookie通知需要符合歐盟cookie規則,這相當令人討厭。我正在處理的網頁在大部分頁面上都沒有使用cookie(僅在某些頁面上使用了CSRF保護)。所以我的想法是僅在用戶遇到實際包含cookie的頁面時才顯示通知。僅在實際使用cookie時顯示cookie通知

我試圖在基礎模板下面的代碼啓用了django.core.context_processors.request模板背景處理器:

{% if request.COOKIES %} 
    <!-- Begin Cookie Consent plugin by Silktide - http://silktide.com/cookieconsent --> 
    <script type="text/javascript"> 
    ... 
    </script> 
    <script type="text/javascript" src="//s3.amazonaws.com/cc.silktide.com/cookieconsent.latest.min.js"></script> 
    <!-- End Cookie Consent plugin --> 
    {% endif %} 

它工作的一種,但它沒有顯示,因爲它被設置在同一網頁的Cookie。相反,它會在用戶設置後的第一頁上顯示它(即,第一次請求對象包含cookie)。

當cookie被實際設置時,是否可以讓它顯示cookie通知?

回答

1

Cookie實際上是由響應對象設置的,而不是通過請求設置的。請求將只接收已經在客戶端瀏覽器中設置的cookie。

更重要的是,有些cookie由parse_response方法中的中間件類設置。該方法在處理完視圖後觸發,因此無法在模板中檢索該方法。它將通過會話和csrf mddlewares在parse_response中分配。