2012-09-24 103 views
3

我正在創建一個Web門戶,並且我想向用戶提供對已更改背景的配置文件/控制面板進行更改的功能。等 任何人都可以請指導我一個有效的方法來實現這一目標? 感謝Django:可自定義的模板

回答

2

這是掛羊頭賣狗肉有更多的是與CSS和JavaScript比Django模板。

與django相關的唯一事情就是這些偏好的實際存儲。

例如實際背景圖像的文件路徑。

這之後你會做類似於在這個答案中描述的東西:

how to change html background dynamically

編輯

我不明白爲什麼你需要爲每個用戶不同的目錄。 Django模板 給你足夠的力量去做你想做的事。

例如,假設每個用戶都可以上傳他自己的背景圖片。另外 我假設你遵循這個流行的Django模式來存儲關於你的用戶的附加信息 。 https://docs.djangoproject.com/en/dev/topics/auth/#storing-additional-information-about-users

所以我們有這個UserProfile型號:

class UserProfile(models.Model): 
    CHOICES = (
     ('vertical', 'Vertical'), 
     ('horizontal', 'Horizontal'), 
    ) 
    user = models.OneToOneField(User) 
    background_image = models.ImageField(upload_to='images') 
    dashboard_layout = models.CharField(max_length=10, choices=CHOICES) 

您可以通過這個額外的信息,您的JavaScript環境(無論是使用Ajax或無) ,然後更改背景圖片爲每一個人用戶。

而且我們可以在模板級別這樣做的特殊佈局:

{% extends "base.html" %} 
{% block main_body %} 
    {% if request.user.get_profile.dashboard_layout == 'vertical' %} 
     {% include "layouts/vertical.html" %} 
    {% else %} 
     {% include "layouts/horizontal.html" %} 
    {% endif %} 
{% endblock main_body %} 
+0

我想到的東西,如創建DIFF目錄(從默認模板複製),並將其分配給用戶,使用戶特定的模板從後端顯示。但是這會增加服務器負載並耗盡資源。任何更有效的將不勝感激。 –

+0

@TarunGaba更新了我的答案。我希望它能更清楚地回答你的問題。 – rantanplan