Как предотвратить переопределение в движке Jinja2 для разных разделов? - PullRequest
0 голосов
/ 26 января 2019

Я очень плохо знаком с Flask и прочитал соответствующие вопросы, но до сих пор не понимаю, как решить эту проблему, поэтому любая помощь будет принята с благодарностью.Пожалуйста, не дублируйте этот вопрос.

У меня есть следующий файл:

index.html

{% extends "bootstrap/base.html" %}

{% block styles %}

<!-- Bootstrap core CSS -->
<link href="/static/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">

<!-- Custom fonts for this template -->
<link href="/static/vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700" rel="stylesheet" type="text/css">
<link href='https://fonts.googleapis.com/css?family=Kaushan+Script' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Droid+Serif:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Roboto+Slab:400,100,300,700' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">


<!-- Custom styles for this template -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" href="/static/css/agency.css">
<link rel="stylesheet" type="text/css" href="/static/css/agency.min.css">

{% endblock %}

{% block navbar %}

<body id="page-top">

  <!-- Navigation -->
  <nav class="navbar navbar-expand-lg navbar-dark fixed-top" id="mainNav">
    <div class="container">
      <a class="navbar-brand js-scroll-trigger" href="#page-top">RFJI Protein Database</a>
      <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
        Menu
        <i class="fas fa-bars"></i>
      </button>
      <div class="collapse navbar-collapse" id="navbarResponsive">
        <ul class="navbar-nav text-uppercase ml-auto">
          <li class="nav-item">
            <a class="nav-link js-scroll-trigger" href="{{ url_for('upload')}}">Upload File</a>
            <li class="nav-item">
              <a class="nav-link js-scroll-trigger" href="#">Protein Database</a>
          </li>
          </li>
          </li>
          </li>



          <div class="wrap">
            <div class="search">
              <div class="col-lg-11 text-center">
              <input type="text" class="searchTerm" placeholder="What are you looking for?">
              <button type="submit" class="searchButton">
                <i class="fa fa-search"></i>
              </button>
            </div>
          </div>

        </ul>


{% endblock %}

{% block content %}


              <meta name="viewport" content="width=device-width, initial-scale=1">
    <style>

    </style>
    </head>
    <body>
          </div>
        </div>
      </nav>

    <header class="masthead">
      <div class="container">
        <div class="intro-text">
          <div class="intro-lead-in">Welcome to the RFJI Protein Database!</div>
          <div class="intro-heading text-uppercase">It's Nice To Meet You</div>

    <style>
    font-family: Arial;
    </style>

    {% endblock %}

    {% block body %}
    <!-- Services -->
    <section id="services">
      <div class="container">
        <div class="row">
          <div class="col-lg-12 text-center">
            <h2 class="section-heading text-uppercase">Features</h2>
            <h3 class="section-subheading text-muted">Lorem ipsum dolor sit amet consectetur.</h3>
          </div>
        </div>
        <div class="row text-center">
          <div class="col-md-4">
          <img src="/static/img/kinase.png" alt="Girl in a onci" style="width:80px;height:90px;">

            </span>
            <h4 class="service-heading">Search Kinases</h4>
            <p class="text-muted">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Minima maxime quam architecto quo inventore harum ex magni, dicta impedit.</p>
          </div>
          <div class="col-md-4">
          <img src="/static/img/inhibitor.png" alt="Girl in a onci" style="width:80px;height:90px;">
            </span>
            <h4 class="service-heading">Search Kinase Inhibitors</h4>
            <p class="text-muted">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Minima maxime quam architecto quo inventore harum ex magni, dicta impedit.</p>
          </div>
          <div class="col-md-4">

          <img src="/static/img/upload.png" alt="Girl in a onci" style="width:80px;height:90px;">
            </span>
            <h4 class="service-heading">Import your own dataset</h4>
            <p class="text-muted">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Minima maxime quam architecto quo inventore harum ex magni, dicta impedit.</p>
          </div>
        </div>
      </div>
    </section>

    {% endblock %}

Проблема в том, что движок Jinja2 отображает только раздел Servicesно игнорирует все остальное.Как я могу это исправить, пожалуйста?Я добавил изображение о том, как я хочу, чтобы веб-сайт выглядел так.

Как я хочу, чтобы веб-сайт выглядел как

Большое спасибо,

Moshi

1 Ответ

0 голосов
/ 26 января 2019

На первый взгляд, весь шаблон - беспорядок.

  • Это должно быть полностью удалено, поскольку оно не принадлежит середине шаблона:
    <style>
    font-family: Arial;
    </style>
  • Существует несколько тегов <body>. В правильном синтаксисе должен быть только тег 1 <body>, который, вероятно, должен быть частью шаблона base.html. В конце этого файла также должен присутствовать соответствующий тег </body>.

  • Некоторые теги <div> закрыты неправильно.

Вам действительно нужно вернуться и переставить этот темп так, чтобы каждый раздел Jinja2 {% block something %} {% endblock %} содержал полный набор тегов (например, полный блок контейнера начальной загрузки div, который правильно закрывается перед оператором endblock.

Шаблон наследования полностью описан в документации Jinja2. Я предполагаю, что вы вырезали и вставляли разделы этого шаблона откуда-то еще, что не является проблемой, если вы убедитесь, что важные компоненты исходного шаблона начальной загрузки не разделены в неправильных местах.

...