Получение текстового файла django для запуска в виде кода

Я пытаюсь начать работу над проектом и использую для этого Django. У меня есть один из атрибутов в моделях start_lines = models.TextField(blank=True, null=True). Эти строки нужны для того, чтобы запустить код с функцией exec(). В качестве одного из них у меня есть

from .code.Lot_sizing_codes import lot_size
ls = lot_size(K, h, r, True)
output, extra_output = (ls.{str(Functions.objects.get(id=request.POST["function_to_call"]))}({request.POST["inputExtras"]}))

Я должен запустить это через функцию, чтобы отобразить то, что я хочу:

def showProgramX(request, pk):
    program = Program.objects.get(id=pk)
    form = ProgramInputForm()
    keys = ""
    vars = []
    for var in program.inputvariables.split(","):
        var_name, var_type = var.split("=")
        keys += f"""
            <tr>
            <th><label for="{var_name}">{var_name}:</label></th>
            <td><input type="text" name="{var_name}" maxlength="1000" class="input" id="id_inputvariables"></td>
            </tr>"""
        vars.append(var_name)
    content = {"program": program, "form": form, "keys": keys}
    if request.method == "POST":
        form1 = ProgramInputForm(request.POST)
        import json

        req = request.POST
        for var in vars:
            line = f"""{var} = {req[f'{var}']}"""
            exec(line, globals())
       
        exec(program.start_lines, globals())
        content["output"] = output
        content["extra_output"] = extra_output
        content['form'] = form1
    return render(request, "programs/program.html", content)

вывод, если я напечатаю program.start_lines, должен быть таким в этом случае {str(Functions.objects.get(id=request.POST["function_to_call"]))} = all а {request.POST["inputExtras"]} - ничего/пусто

from .code.Lot_sizing_codes import lot_size
ls = lot_size(K, h, r, True)
output, extra_output = (ls.all())

где я фактически получаю

from .code.Lot_sizing_codes import lot_size
ls = lot_size(K, h, r, True)
output, extra_output = (ls.{str(Functions.objects.get(id=request.POST["function_to_call"]))}({request.POST["inputExtras"]}))

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

Я понял. Так что теперь просто делюсь знаниями.

Я использовал шаблоны, вдохновившись https://realpython.com/python-string-formatting/

from string import Template 
t = Template(program.start_lines)
print(t.substitute(function =str(Functions.objects.get(id=request.POST["function_to_call"])), argskwargs=request.POST["inputExtras"] ))

и поместите в текстовое поле следующее

from .code.Lot_sizing_codes import lot_size
ls = lot_size(K, h, r, True)
output, extra_output = (ls.$function($argskwargs))
Вернуться на верх