我在我的Django应用程序中使用Ploly Python.我的网络应用程序中有两个主题:黑暗和Illuminate . 如果 Select 浅色主题,图表背景为白色,而对于深色主题,图表背景设置为黑色.这可以分别使用Dark_Theme_Template和light_Theme_Template中的以下代码来完成.
我得到的问题是,当一个用户更改主题时,当另一个用户刷新或回调被击中时,它会影响另一个用户的图表.
dark theme template
import plotly.io as pio
from plotly.graph_objs import Layout
import plotly.graph_objects as go
dark_template_layout = Layout(
paper_bgcolor="black",
plot_bgcolor="black",
# other dark theme settings ...
)
dark_template = go.layout.Template()
dark_template.layout = dark_template_layout
light theme template
import plotly.io as pio
from plotly.graph_objs import Layout
import plotly.graph_objects as go
white_template_layout = Layout(
paper_bgcolor="white",
plot_bgcolor="white",
# further light theme settings ...
)
white_template = go.layout.Template()
white_template.layout = white_template_layout
设置模板并将黑色主题设置为默认设置
import plotly.io as pio
from plotly.graph_objs import Layout
import plotly.graph_objects as go
from apps.dashboards.themes.dark_theme import dark_template
from apps.dashboards.themes.white_theme import white_template
pio.templates["white_template"] = white_template
pio.templates["dark_template"] = dark_template
pio.templates.default = "dark_template"
当用户更改主题时,此视图被调用
class ChangeTheme(View):
def post(self, request):
response = {}
try:
light_mode = True if request.POST.get("light_mode") == "true" else False
if light_mode:
request.session["light_mode"] = True
request.session.save()
pio.templates.default = "white_template"
else:
request.session["light_mode"] = False
request.session.save()
pio.templates.default = "dark_template"
except Exception as error:
return HttpResponse(json.dumps(response), content_type="application/json")
我知道pio.template.default=‘’是导致问题的原因,因为它是跨应用程序全局设置的.因此,当另一个用户更改主题时,系统上的所有其他用户都会更改.
要确保每个用户的主题偏好独立于其他用户,为不同的用户维护不同的主题而不受全局干扰,推荐的最佳实践是什么?我如何重构我的代码来实现这一点? 首先感谢您的帮助!