2013-07-30 67 views
1

當用戶在使用Django的選擇框中選擇不同的選項時,是否可以使頁面的一部分使用完全不同的CSS文件?使用select動態更改樣式

我基本上試圖做的是添加一個主題選擇器到頁面。

謝謝。

回答

-1

這應該與JavaScript,而不是Django。看看用Jquery做到這一點。

編輯:How do I switch my CSS stylesheet using jQuery?

+0

我並不同意這種看法;在Django中這樣做很好。 1)優雅的降級2)使用會話來存儲主題失去了配置和存儲單個網站的主題的能力 –

+0

另外,在移動或緩慢的互聯網用戶訪問未被緩存的頁面將會有相當刺激的經驗;他們會看到默認主題閃光燈,然後改變爲由js –

2

要建立在Django一個主題選擇使用的形式來獲取用戶的樣式表的選擇和存儲風格選擇在會話中。有效形式應該執行:

request.session['style'] = the_style_choice 

https://docs.djangoproject.com/en/1.5/topics/http/sessions/

使用上下文處理器每個請求返回正確的樣式表settings.py:

TEMPLATE_CONTEXT_PROCESSORS = (
    ... 
    "MyContextProcessor.get_style", 
) 

在MyContextProcessor.py

def get_style(request): 
    if 'style' in request.session: 
     style = request.session.get('style')     
    else: 
     style = 'some_style.css' 
     request.session['style'] = style 
    return {'style': style, } 

https://docs.djangoproject.com/en/1.5/ref/templates/api/#subclassing-context-requestcontext

在你的基礎模板添加樣式:

{{ style }} 

您可以使用Ajax的形式給用戶一個流暢的體驗:https://docs.djangoproject.com/en/1.5/topics/class-based-views/generic-editing/#ajax-example

+0

@bodger加載的樣式:我的回答有幫助嗎?反饋表示讚賞。 – allcaps

+0

這是非常聰明,輝煌的解決方案。就我個人而言,我將與django網站一起使用此網站,並將其與site_id的關係存儲爲1-1。 –