回答
这应该与JavaScript,而不是Django。看看用Jquery做到这一点。
要建立在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
@bodger加载的样式:我的回答有帮助吗?反馈表示赞赏。 – allcaps
这是非常聪明,辉煌的解决方案。就我个人而言,我将与django网站一起使用此网站,并将其与site_id的关系存储为1-1。 –
- 1. android动态更改样式
- 2. 动态更改样式。
- 3. 动态SELECT ID中的Catch SELECT更改
- 4. 动态更改样式表C#
- 5. 动态更改基本样式
- 6. 动态更改控件的样式
- 7. 如何动态更改CSS样式
- 8. 动态样式更改方法失败
- 9. 更改按钮样式动态
- 10. WPF动态更改窗口样式
- 11. Angular2无法动态更改css样式
- 12. tabhost中的动态样式更改
- 13. 无循环动态更改类样式
- 14. 动态更改wx.Dialog wx.CLOSE_BOX样式
- 15. 在Extjs中动态更改TextField样式
- 16. 动态更改wx.TextCtrl样式标志
- 17. 在ExtJS 6上动态更改样式
- 18. 更改动态文本的样式
- 19. 基于ApplicationViewState动态更改样式
- 20. 在WPF中动态更改样式
- 21. 动态更改样式的属性
- 22. angularjs:动态更改样式失败
- 23. JavaScript动态更改CSS背景样式
- 24. 动态更改按钮样式
- 25. ASP.NET - 更改样式表动态
- 26. 更改状态更改的样式
- 27. 使用Qt样式表更改状态更改图标
- 28. 使用JavaScript动态更改元素样式属性
- 29. 如何使用widgetwar动态更改组件的样式?
- 30. 如何使用JavaScript动态更改级联样式表(CSS)
我并不同意这种看法;在Django中这样做很好。 1)优雅的降级2)使用会话来存储主题失去了配置和存储单个网站的主题的能力 –
另外,在移动或缓慢的互联网用户访问未被缓存的页面将会有相当刺激的经验;他们会看到默认主题闪光灯,然后改变为由js –