Моя группа и я пытаемся разработать «очень динамичное» веб-приложение с Django.У нас есть шаблон «конфигурации» для пользователей, где каждый может настроить свое пространство.Каждый параметр конфигурации должен быть прочитан из БД.
view:
def config(request):
if 'logged' not in request.session:
return redirect(login)
apps_list = App.objects.all()
varS = varsesion(request)
context = Configurations.objects.all()
for row in context:
row.form = eval(row.form) #Not sure at all if this is ok
print (row.form)
context.App = 'config'
return render(request, "index.html", {'context': context, 'apps_list ': apps_list , 'varS': varS,
'context.App': context.App})
И в нашей БД у нас есть таблица моделей Configurations
, подобная этой:
+----+-----+-----+-----+---------+---------------+
| id |user |Title|Body |OptionBtn| form |
+----+-----+-----+-----+---------+---------------+
| N |userA| X | X | X | DataConfig() |
+----+-----+-----+-----+---------+---------------+
| N2 |userA| X | X | X | ColorsConfig()|
+----+-----+-----+-----+---------+---------------+
| N3 |userA| X | X | X |ButtonsConfig()|
+----+-----+-----+-----+---------+---------------+
И многие другие столбцы, которые я пропущу ...
Конечно, каждое значение Form
в поле form
БД существует в forms.py с соответствующими именами.Проблема возникает, когда я пытаюсь итерировать эти поля форм в нашем шаблоне (каждый второй столбец из БД отображается правильно, как кнопки, заголовки, тексты и т. Д.)
Вот шаблон (Я пропустил некоторые атрибуты в таблице примеров):
<div class="breadcrumb">
<li class="breadcrumb-item">
<a href="/config.html"><h1 style="color:#871830">Configurations panel</h1></a>
</li>
</div>
{% for configuration in context %}
<div style="" id="panel{{ configuration.codConfi }}" class="breadcrumb form-inline">
<div class="form-group col-12" style="color:#228718"><h3>{{ configuration.title}}</h3></div>
<div class="form-group col-3 m-1">
<label class="form-group">{{ configuration.body }}</label>
</div>
<button id="btn{{ configuration.codConfi }}" type="submit" class="btn btn-info ml-auto mr-0 mr-md-3 my-2 my-md-4">{{ configuration.OptionBtn }}</button>
</div>
Все это отображается правильно и идеально.Но когда дело доходит до form
DB colum ...
<!-- _______________________Forms iterations__________________________ -->
<form style="display:none" id="frm{{ configuration.codConfi }}" class="breadcrumb form-inline" action="/Config/{{ configuration.codConfi }}" method="POST" enctype="application/x-www-form-urlencoded">{% csrf_token %}
<div class="form-group col-12" style="color:#228718"><h3>Configure {{ configuration.Title }}</h3></div>
{% for field in configuration.form %}
<div class="form-group col-3 m-1">
<label class="form-group">{{ field.label }}: </label>
{{ field }}
</div>
{% endfor %}
<button type="submit" class="btn btn-success ml-auto mr-0 mr-md-3 my-2 my-md-4">Apply changes</button>
</form>
{% endfor %}
(Если вы видите некоторые атрибуты, которые не показаны в моей таблице примеров, это просто потому, что я не набрал их все).
Вместо того, чтобы правильно отображать фактические формы, он отображает значение столбца form
DB в виде строки.Например, для первого значения в столбце form
(DataConfig()
) каждая буква отображается как строка в итерации (сначала отображается «D», затем «a», затем «t» и т. Д. До последнего")").Как я могу сказать Django, что это не строковое значение, а переменная?