Почему моя программа расширения не работает в html-файле в django? - PullRequest
0 голосов
/ 13 июня 2019

Это становится действительно раздражающим. Я не знаю, что я делаю неправильно, и , что не так , потому что буквально я не получаю ошибок. Но это проблема. Мои другие HTML-файлы не отображаются в файле main.html. Это три файла:

1) main.html

{% load static %}
<link href="{% static 'tinymce/css/prism.css' %}" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
<!DOCTYPE html>
<head>
<title></title>
</head>
<html>
  <body>
    {% block nav_bar %}
    {% endblock %}
    {% block tutorial_blocks %}
    {% endblock %}
    <script src="{% static 'tinymce/js/prism.js' %}"></script>
  </body>
</html>

2) tutorial_blocks.html

{% extends 'center/main.html' %}
{% block tutorial_blocks %}
{% for x in tutorials %}
    <div class="col s12 m6 l4">
      <div class="card blue-grey darken-1">
        <div class="card-content white-text">
          <span class="card-title"><b>{{ x.tutorial_title|safe }}</b></span>
            <p><font color="black">{{ x.tutorial_content|safe }}</font></p>
            <p>Uploaded: <i>{{ x.tutorial_published }}</i></p>
        </div>
        <!--
        <div class="card-action">
          <a href="#">Visit</a>
        </div>
        -->
      </div>
    </div>
  {% endfor %}
{% endblock %}

3) nav_bar.html

{% extends 'center/main.html' %}
{% block nav_bar %}
<nav>
    <div class="nav-wrapper">
      <a href="/" class="brand-logo">Tutorials!</a>
      <ul id="nav-mobile" class="right hide-on-med-and-down">
        <li><a href="/">Home</a></li>
        <li><a href="/register">Register</a></li>
        <li><a href="/login">Login</a></li>
      </ul>
    </div>
</nav>
{% endblock %}

Всякий раз, когда я запускаю сервер, я получаю пустую белую страницу. Однако, если я делаю это так, это работает:

{% load static %}
<link href="{% static 'tinymce/css/prism.css' %}" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
<!DOCTYPE html>
<head>
    <title></title>
</head>
<html>
<body>
<nav>
    <div class="nav-wrapper">
      <a href="/" class="brand-logo">Tutorials!</a>
      <ul id="nav-mobile" class="right hide-on-med-and-down">
        <li><a href="/">Home</a></li>
        <li><a href="/register">Register</a></li>
        <li><a href="/login">Login</a></li>
      </ul>
    </div>
</nav>
{% for x in tutorials %}
    <div class="col s12 m6 l4">
      <div class="card blue-grey darken-1">
        <div class="card-content white-text">
          <span class="card-title"><b>{{ x.tutorial_title|safe }}</b></span>
            <p><font color="black">{{ x.tutorial_content|safe }}</font></p>
            <p>Uploaded: <i>{{ x.tutorial_published }}</i></p>
        </div>
        <!--
        <div class="card-action">
          <a href="#">Visit</a>
        </div>
        -->
      </div>
    </div>
  {% endfor %}
<script src="{% static 'tinymce/js/prism.js' %}"></script>
</body>
</html>

Как вы видите, файл очень быстро запутывается и даже не завершен. Я бы предпочел использовать «расширенный» способ, потому что мне легче редактировать и изменять при необходимости. Любая помощь приветствуется.

1 Ответ

1 голос
/ 13 июня 2019

my view.py обслуживает main.html

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

1 / переименуйте "center / main.html" в "center / base.html"

2 / создайте новый шаблон "center / main.html", который просто заполняет блоки:

{% extends 'center/base.html' %}

{% block tutorial_blocks %}
{% for x in tutorials %}
    <div class="col s12 m6 l4">
      <div class="card blue-grey darken-1">
        <div class="card-content white-text">
          <span class="card-title"><b>{{ x.tutorial_title|safe }}</b></span>
            <p><font color="black">{{ x.tutorial_content|safe }}</font></p>
            <p>Uploaded: <i>{{ x.tutorial_published }}</i></p>
        </div>
        <!--
        <div class="card-action">
          <a href="#">Visit</a>
        </div>
        -->
      </div>
    </div>
  {% endfor %}
{% endblock %}
{% block nav_bar %}
<nav>
    <div class="nav-wrapper">
      <a href="/" class="brand-logo">Tutorials!</a>
      <ul id="nav-mobile" class="right hide-on-med-and-down">
        <li><a href="/">Home</a></li>
        <li><a href="/register">Register</a></li>
        <li><a href="/login">Login</a></li>
      </ul>
    </div>
</nav>
{% endblock %}

Я перемещаю содержимое двух других ваших «подшаблонов» сюда.

И теперь, когда вы отображаете "center / main.html", он должен работать как положено (если, конечно, в вашем коде нет чего-то другого).

В качестве примечания: вы можете изучить и использовать {% url %} templatetag - жесткое кодирование URL - плохая идея.

...