Django - Вызов переменной по введенному пользовательскому тексту

У меня есть данные excel с несколькими столбцами, внутри есть столбец с именем, теперь с помощью HTML ввода пользователь может написать пользовательский текст.

Мне нужно, чтобы пользователь мог использовать что-то для вызова переменной имени, когда ему захочется.

Если использование f'User cutsom text {name}' или что-то подобное не работает, django сохраняет ввод пользовательского текста как текст.

Вы знаете возможность.

Мне нужно, чтобы пользователь мог использовать или вызывать переменные из excel, когда он пишет свой текст

Этот вопрос не очень понятен, но на основании f'User cutsom text {name}' я предполагаю, что вы размещаете входные данные HTML в представлении, а затем используете python для чтения CSV. есть способ динамически форматировать строки

Предварительное знание

Вы можете динамически передавать любые kwargs в любую функцию, используя **{keyword: value} (это очень полезно)
. Вот базовый пример использования этого для форматирования строк:

tmp_str = 'User custom text {name}'

tmp_dict = {'name': 'Neal'}

new_str = tmp_str.format(**tmp_dict)
 
print(new_str) # 'User custom text Neal'

# Note: Having extra keys in the Dictionary is fine
#   it doesn't raise an error if it's not in the string 
Просмотр примера

Расширяя эту идею, вот пример представления

def temp(request):
    if request.method == 'POST'

        # Get String from HTML Input that was POSTed
        formated_string = request.POST.get('some_formated_string')

        # Raw String that was POSTed
        print(formated_string) # '{name} Looks {looks}'

        # Get a Row's Data in a dictionary 
        #   key= header_name/variable_name, value= row+col data
        csv_row_data = {
            'name': 'Neal',
            'intelligence': 'incredible',
            'looks': 'outstanding',
        }

        end_value = formated_string.format(**csv_row_data)

        # formated_string.format(**csv_row_data)
        #   runs the same as:
        # '{name} Looks {looks}'.format(name='Neal', intelligence='incredible', looks='outstanding')

        print(end_value) # 'Neal Looks outstanding'
        # Dynamic String Formatting Successful, do something with end_value

Самой сложной частью, вероятно, будет получение данных строк в словарь. Если вы используете пакет CSV, каждая строка обычно поставляется в виде массива.
Вам придется либо жестко закодировать их, как в блоке ниже, либо как-то динамически установить их на основе заголовков

for row in csv_reader:
        csv_row_data = {
            'name': row[0],
            'intelligence': row[1],
            'looks': row[2],
        }
        end_value = '{name} Looks {looks}'.format(**csv_row_data)

Также было бы неплохо показать valid переменные, которые пользователь может использовать на веб-странице.

Вернуться на верх