2014-01-06 59 views
19

我是一個django初學者,所以我想了解上下文和上下文處理器的概念。Django中的上下文是什麼?

  • 什麼是上下文,爲什麼使用它?
  • 上下文是您需要使用的值,以便在模板中使用?
  • 上下文和上下文處理器是否一樣?

我會婉轉你的迴應。提前致謝!

+4

我建議你從優秀[Django的教程]啓動(https://docs.djangoproject.com/en/dev/intro/tutorial01/),它提供了基本的概念,比如你問的那些對於。 –

回答

42

當您使用Django模板時,它會被編譯一次(並且只會被編譯一次)並存儲以供將來使用,作爲優化。模板可以在雙花括號中包含變量名稱,例如 {{myvar1}},{{myvar2}}。

上下文是一個字典,其變量名稱作爲「鍵」,它們的值作爲「值」。因此,如果上述模板的上下文如下所示:{myvar1:101,myvar2:102},當您將此上下文傳遞給模板渲染方法時,{{myvar1}}將被101和{{myvar2}}替換爲102在您的模板中。這是一個簡單的例子,但是真正的Context對象是模板被渲染的「上下文」。

至於ContextProcessor,這是一個稍微先進的概念。您可以在settings.py文件中列出幾個接收HttpRequest對象並返回字典(類似於上面的Context對象)的Context Processors。上下文處理器返回的字典(上下文)被合併到你(用戶)由Django傳入的上下文中。

上下文處理器的一個用例是當你總想在你的模板中插入某些變量時(例如用戶的位置可能是候選者)。您可以簡單地爲它編寫一個上下文處理器,並將其添加到settings.py中的TEMPLATE_CONTEXT_PROCESSORS設置中,而不用編寫代碼將其插入到每個視圖中。

希望這是有道理的。感謝您參加課程!

-sid

+0

非常感謝Sid !.我非常感謝您的幫助和時間!你澄清了我對此的懷疑。我參加了你的課,因爲我正在爲我的想法建立一個MVP。所以我通過閱讀「Django的兩個勺子」來完成它並超越了它,但是我仍然有許多概念我還是不太明白。在下面的答案中,我擴展了我正在嘗試使用此特定應用程序的內容。 –

8

上下文變量名 - >變量值,該值被傳遞給模板映射。

語境處理器讓您指定的數字的,它們會在自動每個方面設置變量 - 您無需指定每個變量渲染()調用