Сохранение новых строк в форме ввода
Я понимаю, что существует много вопросов, похожих на этот, но все они, похоже, отвечают на обратную сторону: "Как мне отобразить..."
Я могу показать, что я не получаю новые строки из объекта запроса
окружение
django 2.2.1, qunicorn 19.9.0
... работает в образе docker, собранном на базовом образе python 3.7
setup
Предварительно заполнить запись в базе данных:
update api_entitlement set notes= E'line 1\nline2\nline3' where guid='44aa651c-ea98-4990-aa85-d87d21db6043';
.... и подтвердите наличие данных:
select * from api_entitlement where guid='44aa651c-ea98-4990-aa85-d87d21db6043';
id | guid | notes
-------+--------------------------------------+--------
14053 | 44aa651c-ea98-4990-aa85-d87d21db6043 | line 1+
| | line2 +
| | line3
(1 row)
Фрагмент шаблона, который создает textarea
, выглядит следующим образом:
<pre id="{{ entitlement.guid }}_notes">{% if entitlement.notes == '—' or
entitlement.notes is None %}—{% else %}{{ entitlement.notes }}
{% endif %}</pre><textarea id="{{ entitlement.guid }}_notes_new"
type="text" class="form-control" value="{% if entitlement.notes == '—' %}
-{% else %}{{ entitlement.notes }}{% endif %}" style="display:none">{{
entitlement.notes }}</textarea>
(есть некоторый javascript, который переключает с display на edit, с <pre>
на <textarea>
)
а код, который читает форму, выглядит так:
def get(self, request, *args, **kwargs):
logger.info(f"notes value is {request.GET}")
#
# snip irrelevant code
#
value = request.GET.get('notes')
logger.info(f"notes value is {value}")
if value != '-' and entitlement.notes != value:
entitlement.notes = value
#
# ... and even more
Используется
Если я просто отображаю страницу, я получаю 3 строки из базы данных, как три отдельные строки - это хорошо.
Если я переключусь в режим редактирования, то получу форму ввода с тремя строками. Я отредактирую данные так, чтобы в строках 2 & 3 были пробелы перед цифрами, и отправлю форму
Строка logger.info
регистрирует notes value is <QueryDict: {'notes': ['line 1line 2line 3']}>
.
.... новые строки были удалены.
Почему?
.... и, что более важно, как их удержать?
У меня был импортирован whitenoise.middleware.WhiteNoiseMiddleware
middlewhere, но я его удалил - разницы никакой