Передача переменных HTML / JS с использованием чистых шаблонов Python - PullRequest
0 голосов
/ 07 ноября 2019

Мне было предоставлено право управлять простыми шаблонными операциями, переходящими из 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. Второй создает четкое разделение обработки информации, но я боюсь, что я столкнусь с ситуацией, когда я вынужден предоставить слишком много информации для внешнего интерфейса.

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