Я пишу сайт, который будет иметь несколько скинов. Каждый скин имеет свою собственную таблицу стилей. Я хотел бы, чтобы скин определялся переменной GET, чтобы этот URL:
whatever?skin=foo
приведет к отображению страницы, содержащей этот HTML-код в заголовке:
<link rel="stylesheet" type="text/css" href="/site_media/foo.css"/>
(Обычно я хочу, чтобы обложка определялась предпочтениями пользователя, но я хочу, чтобы этот способ также выполнялся, чтобы пользователь мог предварительно просмотреть, как будет выглядеть новая обложка, а также сделать ее проще для меня пока развивается.)
Это довольно легко сделать в Django, например, вы можете использовать шаблон с такой строкой:
<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 .
Так есть ли способ, которым я могу это сделать, чтобы он работал на всех моих страницах, при этом писать код только один раз?