Как добавить кастом (или Dynami c) Javascript из Django Backend? - PullRequest
0 голосов
/ 09 июля 2020

Я хочу добавлять пользовательский JavaScript каждый раз в соответствии с logi c в моем бэкэнде.

Например:

- views.py-- ...

js="JavaScript which i want to add"
js_={'js_script':js}
return render(request,'html.html',context=js_)

- html. html - ....

<script>
{{js_script}}

</script>

Но это не работает должным образом, и каждый раз в различные места исходного кода html добавляется странный ", и работа не выполняется. Пожалуйста, помогите, если у вас есть обходной путь.

Ответы [ 2 ]

1 голос
/ 09 июля 2020

Просто попробовал что-то, и это сработало.

источник: django docs - безопасный тег шаблона

в контексте вы делаете это правильно, пример:

context = {
    'js_var': 'console.log("JavaScript which i want to add")',
}

в шаблоне добавьте тег шаблона "safe", он удалит "" ":

<script>
console.log('sanity check');
 {{js_var|safe}}
 
</script>

output:

sanity check
JavaScript which i want to add

Хорошего дня!

Скажите, сработало ли это для вас?

0 голосов
/ 09 июля 2020

я думаю, вы хотите загрузить пользовательский javascript код локально для конкретной страницы , чтобы сделать это правильным способом без смешивания вещей, вам необходимо определите {% block %} в вашем шаблоне base.html и с помощью механизма наследования DTL вы можете загрузить javascript правильным способом в правильном порядке без каких-либо конфликтов

в base.html define, скажем, {% block javascripts_local %}{% endblock %} например,

{% load static %}
<!doctype html>
<html class="no-js" lang="{% block lang %}en{% endblock %}">
<head>

[..]

</head>
<body{% block body_attributes %}{% endblock %}>

[..]

  {% block javascripts %}

  <!-- i'm using HTML5 Boiler Plate template -->
  <script src="{% static 'js/vendor/modernizr-3.7.1.min.js' %}"></script>
  <script src="{% static 'js/plugins.js' %}"></script>
  <script src="{% static 'js/main.js' %}"></script>

  <!-- override this block in child template -->
  {% block javascripts_local %}{% endblock %}

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

, а затем в вашем дочернем шаблоне переопределите блок

{% extends 'base.html' %}
{% load static %}


[..]

{% block javascripts_local %}
<script>
  // Your javascript code goes here
</script>
{% endblock %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...