Тег включения: часть в блок содержимого и часть в блок скриптов - PullRequest
0 голосов
/ 11 июля 2020

Django 3.0.8

Выбранной системе комментирования нужно что-то вроде этого:

<div id="anycomment-app"></div>
<script>
AnyComment = window.AnyComment || []; AnyComment.Comments = [];
AnyComment.Comments.push({
    "root": "anycomment-app",
    "app_id": 15,
    "track_get_params": true,
    "language": "en"
})
var s = document.createElement("script"); s.type = "text/javascript"; s.async = true;
s.src = "https://cdn.anycomment.io/assets/js/launcher.js";
var sa = document.getElementsByTagName("script")[0];
sa.parentNode.insertBefore(s, s.nextSibling);
</script>

То есть нужен div и скрипт. Я бы предпочел размещать скрипты в конце тела, даже если включен asyn c.

@register.inclusion_tag('scripts/scripts.html')
def comments(context) -> str:
    html_tag = '<div id="anycomment-app"></div>'
    scripts_str = '    <script>
    AnyComment = window.AnyComment || []; AnyComment.Comments = [];
    AnyComment.Comments.push({
        "root": "anycomment-app",
        "app_id": 15,
        "track_get_params": true,
        "language": "en"
    })
    var s = document.createElement("script"); s.type = "text/javascript"; s.async = true;
    s.src = "https://cdn.anycomment.io/assets/js/launcher.js";
    var sa = document.getElementsByTagName("script")[0];
    sa.parentNode.insertBefore(s, s.nextSibling);
    </script>
'

    return {"html_tag": html_tag,
            "scripts": scripts_str,}

base. html

{% load static %}
{% load general %}
{% load scripts %}

{% include 'general/header.html' %}
<body>
{% everywhere position="body_start" %}

{% social_subscribe %}

{% block breadcrumbs %}
{% endblock %}

<div class="content">
{% block content %}
{% endblock %}
</div>

{% include 'general/footer.html' %}

footer. html

{% load scripts %}

{% block scripts %}
{% endblock %}
</body>
</html>

сообщение. html

{% extends 'general/base.html' %}
{% load scripts %}

{% block content %}
    
{% endblock %}

{% block scripts %}
    {{ block.super }}
{% endblock %}

Проблема

Как я могу поместить тег div в содержимое и тег скрипта в скрипты?

...