django方式如何改变每个页面的背景图片和内容

Posted

技术标签:

【中文标题】django方式如何改变每个页面的背景图片和内容【英文标题】:How to change the background picture and content of each pages in django way 【发布时间】:2015-11-12 15:12:31 【问题描述】:

我有一个 base.html 文件和 10 多个具有不同背景图片和内容的其他页面。我尝试使用 % extends "base.html" % ,但是如果这样做,我该如何更改每个页面中的背景图片和内容?请帮我处理这个案子。提前致谢。

编辑

我的目录:

还有我的 base.html:

     % load staticfiles %

      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="utf-8">
          <meta http-equiv="X-UA-Compatible" content="IE=edge">
          <meta name="viewport" content="width=device-width, initial-scale=1">
          <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
          <meta name="description" content="">
          <meta name="author" content="">
          <link rel="icon" href="../../favicon.ico">

          <title>Parasol.</title>

          <!-- Bootstrap core CSS -->
            <link href="%  static 'css/bootstrap.min.css' %" rel="stylesheet">
            <link href="%  static 'css/navbar-static-top.css' %" rel="stylesheet">
            <link href="%  static 'css/style.css' %" rel="stylesheet">

          <!-- Custom styles for this template -->
          <link href="navbar-static-top.css" rel="stylesheet">
          <script src="../../assets/js/ie-emulation-modes-warning.js"></script>
          <style>
          % block additional_styles %
     body 
      background:url(static/custom/img/voice.jpg) no-repeat center center fixed;
     
  </style>

      % endblock %

        </head>
        <body>
       <nav class="navbar navbar-default navbar-static-top">
            <div class="container">
              <div class="navbar-header">
                <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
                  <span class="sr-only">Toggle navigation</span>
                <a class="navbar-brand" href="% url "home" %">Parasol.</a>
              </div>
              <div id="navbar" class="navbar-collapse collapse">
                <ul class="nav navbar-nav">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Photos <span class="caret"></span></a>
                    <ul class="dropdown-menu">
                      <li><a href="#">Action</a></li>
                    </ul>
                  </li>
                </ul>
                <ul class="nav navbar-nav navbar-right">
                  <li><a href="% url "firstsite" %">Timeline</a></li>
                  <li class="active"><a href="./">Quotes<span class="sr-only">(current)</span></a></li>
                  <li><a href="% url "friends" %">Friends</a></li>
                </ul>
              </div><!--/.nav-collapse -->
            </div>
          </nav>
          <div class="container">
            <div class="jumbotron">
              <h1>Just her and the revolution</h1>
              <p>
      <a href="% url 'go' %" class="btn btn-lg btn-primary">Let's take a trip.. </a>
              </p>
            </div>

          </div>
          <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
          <script src="../../dist/js/bootstrap.min.js"></script>
          <!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
          <script src="../../assets/js/ie10-viewport-bug-workaround.js"></script>

        </body>
      </html>

【问题讨论】:

请解释一下你说的内容是什么?是动态数据还是静态数据? 它不是动态的。它是静态的 似乎我只需要在我所有其他页面的基础中覆盖我的 body css。如何做到这一点 我的 CSS 正文:body background:url(../img/voice.jpg) no-repeat center center fixed; -webkit-background-size: cover -moz-background-size: cover; -o-background-size: cover; background-size: cover; 【参考方案1】:

有许多不同的方法可以做到这一点,具体取决于内容的类型、您的项目和模板结构。关于背景图片,您可以简单地将块添加到您的 base.html

% block additional_styles %
<style>
   body 
    background-image: url(images/base.jpg);
   
</style>
% endblock %

然后在你的 template_1.html (这是一些其他页面的模板):

% extends 'base.html' %
% block additional_styles %
<style>
   body 
    background-image: url(images/1.jpg);
   
</style>
% endblock %

【讨论】:

对不起,我对 django 很陌生。附加样式是什么意思? @blackwindow 这只是块的随机名称。通常,在您的浏览器中,base.html(父模板)中此块的内容将被 template_1.html(子模板,它继承 base html 与 % extends 'base. html' % 补充阅读:docs.djangoproject.com/en/1.8/topics/templates模板系统是Django的核心,那篇文章绝对值得一读。 嗨,svfat,我尝试了上述方法(编辑了我的问题)。但不知道为什么我的背景图片正在加载。你能帮忙吗?提前致谢 @blackwindow 我不清楚你的问题。您的背景图片是否正在加载? @blackwindow 你应该将 【参考方案2】:

除了上述答案之外,在 base.html 中添加以下标签

% block additional_styles %
% endblock %

在您的&lt;head&gt; 标记中。 喜欢(在 base.html 中)

    <head>
        % block additional_styles %
        % endblock %
    </head>

【讨论】:

【参考方案3】:

您可以通过覆盖引导程序的预定义样式(如在 css 文件或额外样式部分中或取代特定部分样式)来做到这一点,例如

<nav class="navbar navbar-expand-md navbar-dark fixed-top" style="background-color: #32CD32;">

<nav class="navbar navbar-expand-md navbar-dark fixed-top" style="background-image: url(% static "img/ok.jpg" %); background-repeat: repeat-x;">

 

【讨论】:

以上是关于django方式如何改变每个页面的背景图片和内容的主要内容,如果未能解决你的问题,请参考以下文章

Django Admin:改变数据的显示方式

如何将内容从 django 中的页面传递到侧边栏?

如何以特定的 django 形式执行此操作?

如何用css动态控制footer的位置

js获取url参数 如何改变当前页面内某个图片的地址?

django中web页面的跳转方式