【问题标题】:Customize CSS from Code (Django)从代码自定义 CSS (Django)
【发布时间】:2015-01-19 17:14:11
【问题描述】:

我正在 django 上编写一个应用程序,并希望实现一个更改 CSS 设置的功能。例如,在我的设置模块上,我想更改字体的颜色或字体的大小,知道如何实现吗?

谢谢!

【问题讨论】:

  • 您的问题非常不清楚。您是在谈论界面,还是会改变网站外观的东西?另外,您是否查看过docs.djangoproject.com/en/1.7/howto/static-files/…,如果这是您所要求的吗?
  • 对不起,如果我的问题不是很清楚,但下面的所有答案都符合我的要求。感谢您的建议;)。

标签: python css django


【解决方案1】:

我正在使用自定义视图来返回动态 CSS 文件;它使用文件缓存来避免每次请求都重复渲染。

查看功能:

@cache_page(None)  # won't expire, ever
def dyn_css(request):
    (css_theme, created) = CSS_Theme.objects.get_or_create(pk=1)
    return render_to_response('dynamic.css', {'theme': css_theme},
                              content_type="text/css")

重置功能,需要时“手动”调用:

def reset_cache(request, view='dyn_css', args=None):
    from django.core.cache import cache
    from django.utils.cache import get_cache_key

    if args is None:
        path = reverse(view)
    else:
        path = reverse(view, args=args)

    request.path = path
    key = get_cache_key(request)
    if key in cache:
        cache.delete(key)

CSS 文件:

.row {
    background-color: {{ theme.background_color }} !important;
}

【讨论】:

  • 我在我的base.html 文件中有它,如下所示:<link rel="stylesheet" type="text/css" href="/dynamic_css/global.css">
  • 这个答案非常适合我。我会检查它是否被接受。非常感谢!
【解决方案2】:

最简单的方法是在您的settings.py 文件中创建一个名为FONT_COLOR 的变量(例如)。

然后,当您呈现模板时,您可以将 FONT_COLOR 添加到响应上下文并使用它来覆盖您的 CSS。

模板.html

...

<style>
    body {
        color: {{ FONT_COLOR }};
    }
</style>

...

【讨论】:

    【解决方案3】:

    您可以在此处采用几种不同的方法。

    最简单的方法是为您动态设置的类设置 static css。:

    <P class='{{ dynamic_classes }}'>
    

    您还可以在常规视图中进行一些 CSS 覆盖。例如,如果您希望 a 在“警告”条件下呈现红色:

    </head>
    <style>
       {% if warning %}
       b {color: red;}
       {% endif %}
    </style>
    

    也可以将 CSS 呈现为动态视图而不是静态视图,但我会先探索这两个其他选项。

    【讨论】:

      【解决方案4】:

      您应该检查http://sass-lang.com/ 它允许您设置变量,例如颜色和大小,然后在您的网站或应用程序中使用主题,当您需要更改某些内容时,您只需更改变量即可。

      【讨论】:

        猜你喜欢
        • 2017-08-18
        • 2015-06-24
        • 1970-01-01
        • 1970-01-01
        • 2011-11-21
        • 2010-11-13
        • 2014-05-04
        • 2014-10-09
        • 1970-01-01
        相关资源
        最近更新 更多