2017-09-25 1 views
0

Ich bin ein wenig verwirrt durch das folgende Verhalten der Django-Vorlagen, die mich daran hindert, die Ausgabe erfolgreich zu stylen.Django 1.10 Vorlage Rendern geschachtelte HTML-Tags außerhalb ihres Elternteils

nämlich habe ich die folgende Vorlage:

<article class="article 
    {% if article.is_featured %} featured{% endif %} 
    {% if not article.published %} unpublished{% endif %}"> 
{% if not detail_view %} 

    <div class="post-preview"> 
     <a href="{% namespace_url 'article-detail' article.slug namespace=namespace default='' %}"> 
      <h2 class="post-title"> 
      {% render_model article "title" "" "" "striptags" %} 
      </h2> 
      {% if article.lead_in %} 
      <h3 class="post-subtitle"> 
       {% if not detail_view %} 
        {% render_model article "lead_in" "" "" "truncatewords:'20'|striptags" %} 
       {% else %}  
        {% render_model article "lead_in" "" "" "striptags" %} 
       {% endif %} 
      </h3> 
      {% endif %} 
     </a> 
     <p class="post-meta" style="margin-bottom: 0;"> Posted by 
      {% include "aldryn_newsblog/includes/author.html" with author=article.author %} 
      on {{ article.publishing_date|date:"F d, Y" }} 
     </p> 
     <p class="post-meta" style="margin: 0"> 
      <h4 style="display:inline-flex">Categories:</h4> 
       {% for category in article.categories.all %} 
        <a href="/articles/category/{{category.name|lower}}">{{ category.name }} {% if not forloop.last %}, {% endif %}</a> 
       {% endfor %} 
     </p> 
     <p class="post-meta" style="margin: 0"> 
      <h4 style="display:inline-flex">Tags:</h4> 
       {% for tag in article.tag %} 
        <a href="/articles/category/{{tag.name|lower}}">{{ tag.name }} {% if not forloop.last %}, {% endif %}</a> 
       {% endfor %} 
     </p> 
    </div> 
    <hr> 
{% endif %} 

{% if detail_view %} 
<!-- <h3>Testing template! (from article with detail_view=True)</h3> --> 
     {% render_placeholder article.content language placeholder_language %}   
{% endif %} 

</article> 

Die Ausgabe dieser Vorlage das ist in etwa so:

<article class="article"> 
    <div class="post-preview"> 
     <a href="/articles/third-post/"> 
      <h2 class="post-title"> 
      Third Post 
      </h2> 
      <h3 class="post-subtitle"> 
        Third post lead-in text. 
      </h3> 
     </a> 
     <p class="post-meta" style="margin-bottom: 0;"> Posted by 
    <a href="">  
    </a> 

      on September 19, 2017 
     </p> 
     <p class="post-meta" style="margin: 0"> 
      <h4 style="display:inline-flex">Categories:</h4> 

      <a href="/articles/category/programming">Programming </a>    
     </p> 
    <p class="post-meta" style="margin: 0"> 
     <h4 style="display:inline-flex">Tags:</h4> 

    </p> 

    </div> 
    <hr> 
</article> 

Obwohl die Quelle HTML korrekt scheint, der Browser behandelt sie wie folgt Bild veranschaulicht.

As you can see, the H4 tag and others are taken outside the <p> tag.

Was bin ich? Ist die Vorlage falsch? Oder ist das ein Fehler, den ich beobachte? Ich habe das in Safari und Firefox versucht. Das Ergebnis ist das gleiche.

Antwort

1

Nein, das sind nur die Browser-Dev-Tools, die versuchen, Ihren ungültigen HTML-Code sinnvoll zu machen.

Ein h Element kann nicht in ein p Element eingefügt werden.

1

Schauen Sie sich diese Antwort:

<h1>, <h2>, <h3>... tags, inline within paragraphs (<p>)

Sie erklären es in der Tiefe mehr drin, aber im Grunde Ihre <h1,2,3,4>-Tags in den <p> Tags eingebettet wird vom Browser als illegal betrachtet und Schließen automatisch die Tags. Verwenden Sie ein anderes Tag und es sollte Ihr Problem beheben.

+0

Sehr geschätzt! – MadPhysicist