Как расширить html-шаблон с контентом jquery с помощью jinja2?

#python #html #jquery #flask

Вопрос:

Вот мой 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 но потерпел неудачу.
Ни только изменение цвета фона, ни jquery не могут быть загружены в chrome, в результате не отображается индикатор времени.
Как я могу использовать {% extends «base.html» %} (метод jinja2) для расширения base.html чтобы index.html?
Большое спасибо

Ответ №1:

Прежде всего, вы должны определить

{% block content %}{% endblock %}

в base.html а затем в index.html.

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

Все содержимое должно быть между

{% block content %}{% endblock %} в index.html. вы можете посмотреть в документации

Ответ №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 %}
 

Комментарии:

1. Я попробовал ваше решение, но оно все еще не работает, отображается только базовый шаблон, но средство выбора календаря все еще отсутствует

2. Если вы проверите свой путь к шаблону, вы сможете справиться со всем этим, я думаю. Я думаю, что вы можете получить ошибку пути при отрисовке шаблона