2012-09-24 46 views
5

我是django的新手,我有一個很基本的問題。如何使用django在網站上存儲靜態文本

可以說我有這個主題:

enter image description here

我做了一個項目了,所以我知道一點知道如何建立模型動態內容,將它們傳遞到視圖和管理面板等,但是:

問題:上面的圖片上我標記了3個包含文本的容器。整個網站上只有一個這樣的文字實例,它不可重複。如果我爲自己開發,我只會硬編碼,但如果我爲客戶開發,需要使用管理面板來編輯這些字段,該怎麼辦?

我應該爲整個網站創建一個單獨的類,其中包含多個這樣的容器(可以說20個)字段,在視圖中傳遞該類(並使用[:1]進行過濾)以在模板中使用它?

這是我想出的唯一的東西。雖然它會起作用,但我認爲這是一個可怕的解決方案。

回答

4

我會做的是寫一個包含Blurb的插入TextFieldCharField識別它,並且custom template tag通過你傳遞給它的參數從數據庫讀取的Blurb的一個模型。

class Blurb(models.Model): 
    ident = models.CharField(..., db_index=True) 
    blurb = models.TextField(...) 

PK ident text 
1 main Hey! Do you like this template? This... 

{% load blurb %} 
... 
{% blurb main %} 
+0

要花費一些時間去理解它是如何工作和虐待報告如何去算賬,謝謝:) – Chris

+0

好了,我得到了我的頭周圍。因爲文檔指出:「該應用程序應該包含一個templatetags目錄,與models.py,views.py等級相同。」這意味着即時通訊只能在與某些應用程序視圖相關的模板中使用特定的模板標籤嗎?這意味着我應該爲每個應用創建不同的「blurb」類嗎? – Chris

+2

您將創建一個單獨的「blurb」應用程序,其中包含模型,模板標記庫和可選的管理視圖。 –

2

您可以選擇1個模型,其中包含模型中文本的描述符。

喜歡的東西:

class SomeText(models.Model): 
    position = models.CharField(max_length=120, choices=POSITION_DESCRIPTORS) 
    text = models.TextField() 
+0

要閱讀關於描述符是如何工作的,並且生病回到這裏,謝謝! – Chris

+0

我應該如何將它傳遞給模板?我應該讓SomeText類成爲一個全球性的,可以通過整個網站使用TEMPLATE_CONTEXT_PROCESSORS訪問嗎? – Chris

相關問題