在Django中从视图更改CSS样式 - python

抱歉,如果对此有一个明确的答案,我仍然在学习Django。

我正在创建一个包含6个预定主题的网站(未存储在数据库中)
英语,公民,文学,语言,历史,圣经

每个主题都将与一种独特的颜色相关联。

我有一个subject.html页面的模板和一个从URL appname / subject / subjectname加载的视图

我需要做的是根据访问的主题应用特定的CSS来设置页面样式。例如,如果用户转到appname / subject / english,我希望页面以英语为“主题”。

我希望我已经说清楚了,我也想知道是否有一种方法可以将实际的CSS代码添加到样式表中,而不必从后端一一更改属性。

非常感谢!

python大神给出的解决方案

Django的视图不负责演示,这是模板(当然还有CSS等)的责任。现在,假设您具有用于不同主题的相同视图,那么该视图显然需要知道哪个是当前主题(我假设是从作为参数传递给该视图的url的捕获部分中获得的),因此可以轻松地将此信息传递给模板,进而可以使用它向body标签添加特定于主题的类。然后,您只需要相应地编写CSS。

举个例子:

# urls.py

patterns = urlpatterns('',
    #...
    url(r'whatever/(P?<subject>[a-z-]+>)/$', 'myviews.index', ...),
    )

# myviews.py
def index(request, subject):
    # do whatever
    context = {
       # whatever else
       'subject':subject
       }
   return render(request, "whatever/index.html", context)

# whatever/index.html
<html>
   # headers etc
   <body class="something {{ subject }} etc">
     # whatever here
   </body>
</html>