Я создаю 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, но безрезультатно.