Мне было предоставлено право управлять простыми шаблонными операциями, переходящими из Python в JS / JQuery и Ajax. Я имею в виду два возможных шаблонных шаблона, но я не уверен, что лучше, или если это не имеет значения, пока это соответствует. Чтобы уточнить, мне не разрешено использовать шаблонизацию.
В качестве отдельного примера, давайте предположим, что один из моих входов - кнопка, которая пытается удалить некоторые данные из базы данных при нажатии. Для ясности, я буду предварять переменные Python py_
метод один
Непосредственная подача данных переменных из Python "вниз" в JavaScript:
py_form_inputs = some_database_data
py_html_template = ""
for input in py_form_inputs:
py_input_type = input['data_type']
py_input_name = input['field_name']
py_input_value = input['value']
py_deletion_path = input['path']
if py_input_type == "text":
py_html_template += """
$('.delete-button').on('click', function(){
$.ajax({
type: "GET",
url: '""" + some_deletion_url + """',
data:
{
file_url: '""" + py_deletion_path + """',
table_id: '""" + py_some_imported_id + """',
registry_id: '""" + py_some_other_id + """',
column_name: '""" + py_input_name + """'
},
success: function (data) {
//do something
},
error: function (error) {
// do something
}
});
})
"""
elif py_input_type == "some_other_type"
py_html_template += """ etc"""
elif ...
return py_html_template
метод два
Создание интерфейсной версии данных для разделения шаблонов и действий. Это означает подачу на форму необходимых данных при рендеринге, то есть: f'<input type='{py_input_type}>
, а затем управление всеми операциями JQuery / Ajax с помощью выбора класса HTML и атрибутов данных
Первый вариант, кажется, обеспечивает более прямое управление, но также страдаетв масштабируемости, которая может быть уменьшена, если быть умным относительно селекторов JQuery. Второй создает четкое разделение обработки информации, но я боюсь, что я столкнусь с ситуацией, когда я вынужден предоставить слишком много информации для внешнего интерфейса.