0

我正在使用 Django,我在我的网站上添加了暗模式。但仅适用于登录用户,有没有办法为匿名用户添加它?

代码:

class Mood(models.Model):

    user = models.ForeginKey(User, null=True, blank=True, related_name=dark)

我检查它是否存在于模板视图函数中:

dark = Mood.object.filter(user=request.user)

Context={'dark':dark}

然后我在模板中检查它

 {% if dark %}
add css file for dark mood
{%else%}
Css light mood file
{%endif%}

现在添加暗模式的唯一方法是登录用户,对于匿名用户还有其他方法吗?

4

1 回答 1

2

您可以将用户喜欢的模式存储在会话 [Django docs]变量中。假设有一个视图可以切换用户想要使用的模式:

from django.shortcuts import redirect


def toggle_css_mode(request):
    css_mode = request.session.get('css_mode', 'light')
    request.session['css_mode'] = 'dark' if css_mode == 'light' else 'light'
    return redirect(request.META.get('HTTP_REFERER', '/')) # redirect to last page or index / home page if none

您将有一些链接到此视图的锚标记以切换 css 模式。

现在在您的模板中,您可以通过以下方式呈现相关的 css:

{% if request.session.css_mode == "dark" %}
    css file for dark mode
{% else %}
    css file for light mode
{% endif %}
于 2021-04-24T07:54:34.047 回答