Django сохранить имя переменной в дБ - PullRequest
0 голосов
/ 09 февраля 2020

Я пишу что-то из собственного cms, и мне нужно сохранить имена переменных

Например, пользователь может написать это в textarea (и мне нужно сохранить точно такую ​​же фразу в db с этим синтаксисом):

My dog is {{dog_name}}

И где-то на странице dog_settings.html он может установить dog_name=Max

И когда он нажимает на кнопку результата, которая вызывается, покажите мне комбинацию шаблона, который он написал и настройки:

Мне нужно показать ему строку результата:

My dog is Max

Как мне это сделать?

* Затем он может переименовать его Собака на Jack, и результат должен быть переименован: My dog is Jack

* Он также может изменить порядок слов или всей фразы, {{dog_name}} is awesome, и результат будет Jack is awesome

Также он может использовать html в текстовой области, например <p>{{dog_name}} is awesome</p> Так что в результате мне нужно показать ему то, что называется raw html, но также вставить настоящее имя собаки. Более того, dog_name может быть также html, как dog_name=<span>Jack</span>. Таким образом, результат будет <p><span>Jack</span> is awesome</p>

1 Ответ

0 голосов
/ 09 февраля 2020

Способ сделать это можно с помощью regEx. так что вы можете извлечь все внутри {{и}}, а затем сохранить ключ и значение. Вот пример:
Ваши модели должны иметь что-то вроде этого:

class textArea(models.Model):
      text = models.TextField(max_length=50)

class options(modesl.Model):
      op_key = models.CharField(max_length=50)
      op_val = models.CharField(max_length=50)
      text = models.ForeignKey(textArea)

и, на ваш взгляд:

this_text = textArea.objects.get(pk=3)
text_options = options.objects.filter(text=this_text)

, тогда вы можете просто заменить ключи на значения, подобные этим (в view).

for each_option in text_options:
    this_text.text.replace("{{" + str(each_option.op_key) + "}}", each_option.op_val)

и теперь вы заменили строку.
и в другом представлении вы можете извлечь эти ключи из текста.

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