【问题标题】:How to extend html template with jquery content by jinja2?如何通过 jinja2 使用 jquery 内容扩展 html 模板?
【发布时间】:2021-08-25 03:12:55
【问题描述】:

这是我的html代码

Base.html

<title> {% block title %}{% endblock %} </title>
</head>
<body>
    <nav class="navbar navbar-expand-lg navbar-light bg-light">
      
        <div class="collapse navbar-collapse" id="navbarSupportedContent">
          <ul class="navbar-nav mr-auto">
            
            
            <li class="nav-item dropdown">
              <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                Dropdown
              </a>
              <div class="dropdown-menu" aria-labelledby="navbarDropdown">
                <a class="dropdown-item" href="/content">Home</a>
                <a class="dropdown-item" href="#">Calendar</a>
        
              </div>
            </li>
            <li class="nav-item">
              <a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Still in progress...</a>
            </li>
          </ul>
    
          </form>
        </div>
      </nav>
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
</body>

然后这是我的 jquery 代码:

index.html

<html>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<head>
<title>Datepicker</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/momentjs/2.14.1/moment.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.37/js/bootstrap-datetimepicker.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.37/css/bootstrap-datetimepicker.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
</head>



<script>
  $(function () {
    $('#datetimepicker1').datetimepicker();
 });
</script>
<body>
    
<div class="container">
   <div class="panel panel-primary">
      <div class="panel-heading">Schedule an Appointment</div>
        <div class="panel-body">
            <form action="/ok" method="post">
                <div class="row">
                    <div class='col-md-6'>
                        <div class="form-group">
                        <label class="control-label">Appointment Time</label>
                            <div class='input-group date' id='datetimepicker1'>
                                <input type='text' class="form-control" name="Time"/>
                                <span class="input-group-addon">
                                    <span class="glyphicon glyphicon-calendar"></span>
                                </span>
                            </div>
                        </div>
                    </div>
                </div>
                <input type="submit" class="btn btn-primary" value="Submit">
            </form>
        </div>
    </div>
</div>
</body>

我已经尝试过多次修改 index.html 以便能够通过 base.html 进行扩展,但都失败了。 chrome 中既不能加载背景颜色更改,也不能加载 jquery,因此不会出现 datetimepicker。 如何使用 {% extends "base.html" %} (jinja2 方法)将 base.html 扩展到 index.html? 非常感谢

【问题讨论】:

    标签: python html jquery flask


    【解决方案1】:

    首先你要定义

    {% block content %}{% endblock %}

    在 base.html 中,然后在 index.html 中。

    {% extends "base.html" %} // at top of file

    所有内容都应该在之间

    {% block content %}{% endblock %} 在 index.html 中。你可以在documentation看到

    【讨论】:

      【解决方案2】:

      base.html

      <html> ...
      

      your_main_html.html

      {% extends "base.html" %}
      
      {% block extrahead %}
      <style>
           <!-- your css codes -->
      </style>
      {% endblock %}
      
      
      {% block content %}
      <!-- your html and jinja codes -->
      {% endblock %}
      
      {% block extrajs %}
       <script>
          <!-- your js codes -->
       </script>
      {% endblock %}
      

      【讨论】:

      • 我尝试了您的解决方案但仍然无法正常工作,仅显示基本模板但日历选择器仍然丢失
      • 如果您检查您的模板路径,您可以处理我认为的所有内容。我认为您在渲染模板时可能会遇到路径错误
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-10
      • 2016-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多