2011-03-07 15 views
0

我寫了一個網站,將有多個皮膚。每個皮膚都有自己的樣式表。我想用一個GET變量來決定的肌膚,讓這個網址:如何在Django中使用多個樣式表,樣式表由GET變量確定,而不違反DRY?

whatever?skin=foo 

將導致網頁包含此HTML代碼在標題中被渲染:

<link rel="stylesheet" type="text/css" href="/site_media/foo.css"/> 

(通常我希望皮膚由用戶的喜好來決定,但我也希望這樣做,所以用戶可以預覽一下新皮膚的外觀,以及在開發皮膚時對其進行簡化。)

這在Django中很容易做到,例如,您可以使用一個帶有thi s的線路:

<link rel="stylesheet" type="text/css" href="/site_media/{{skin}}.css"/> 

而且這樣的觀點:

def whateverView(request): 
    """ called by URL /whatever """ 
    skin = request.GET.get('skin', "default") 
    c = RequestContext(request, {'skin': skin}) 
    html = whateverTemplate.render(c) 
    return HttpResponse(html) 

但我不希望有那樣做,因爲我將不得不相同的代碼添加到每個單一視圖,這將違反DRY

那麼有什麼辦法可以做到這一點,這樣它可以在我的所有頁面上工作,而只需要編寫一次代碼?

回答