Попытка скрыть Django в объявленной переменной JS, отображаемой в исходном коде страницы - PullRequest
0 голосов
/ 21 мая 2018

Я создаю RESTful API, который визуализирует внешний интерфейс с использованием шаблонов Django, но где внешний интерфейс по существу построен с использованием JS / JQuery.Сейчас я просто проверяю, что данные были отправлены правильно, и у меня есть очень простой шаблон:

{% extends 'base.html' %}
{% block body %}
  Click <a href="{% url 'home_view' %}">here</a> to go to the home page
  <hr>
  <div id="keySelectForm"></div>
  <div id="dataDisplay"></div>
{% endblock %}

Когда страница загружается, я просто добавляю простой выпадающий список срелевантные данные, которые были переданы во внешний интерфейс, и поле щелчка, которое просто отображает указанные данные на странице.Поэтому я объявляю переменные JS в скрипте внизу страницы следующим образом:

{% block javascript %}
{{ block.super }}
<script id="dataDisplayScript" type="text/javascript">
$(document).ready(function() {
  var df_dict = {{ df_dict|safe }};
  var names = {{ names|safe }};

  // Build form
  var form = $('<form></form>');
  var selection = $('<select name="keys" id="keySelectBox"></select>');
  var button = $('<button id="test">Click me</button>');
  form.append(selection)
  // Add selection options to main page
  Object.keys(df_dict).forEach(function(key) {
    selection.append($('<option value="' + key + '">' + key + '</option>'));
  });
  form.append(button);
  $('#keySelectForm').append(form);

  // Pull data from select box and display only that part of the JSON
  $('#test').on('click', function(event) {
    event.preventDefault();
   $("#dataDisplay").empty().append(JSON.stringify(JSON.parse(df_dict[$('form').serializeArray()[0].value])));
  });
});
</script>
{% endblock %}

Чтобы сделать это, мне нужно загрузить все JSON при загрузке страницы, но после объявленияпеременная "df_dict" - необработанные данные, которые были переданы в контексте от серверной части как df_dict, видимы в инструментах разработки.Так как мне нужно использовать нотацию {{}} для доступа к данным, я не могу просто переместить этот скрипт во внешний файл и Мне интересно, есть ли способ скрыть эти данные, чтобы они не были видны внутриисходный код страницы («Элементы» в Chrome dev tools).Как видите, я попытался присвоить сценарию идентификатор и установить

script#dataDisplayScript {
  display: none;
}

в CSS, но безрезультатно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...