使用select动态更改样式

时间:2013-07-30 09:25:17

标签: django

当用户使用Django在选择框中选择其他选项时,是否可以使页面的一部分使用完全不同的CSS文件?

我基本上要做的是在页面中添加一个主题选择器。

感谢。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:-1)

这应该用javascript完成,而不是Django。看看用Jquery做这件事。

修改:How do I switch my CSS stylesheet using jQuery?