#django
Вопрос:
Я понимаю, что есть много вопросов, подобных этому, но все они, похоже, отвечают на обратную сторону: «Как мне отобразить…»
Я могу показать, что я не получаю новые строки из объекта запроса
Окружающая среда
джанго 2.2.1, куникорн 19.9.0
.. запуск в образе docker, построенном на базовом образе python 3.7
установка
Предварительное заполнение записи базы данных:
update api_entitlement set notes= E'line 1nline2nline3' 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, который переключается с отображения на редактирование, с <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 строки из базы данных в виде трех отдельных строк — это хорошо.
Если я переключусь в режим редактирования, я получу 3-строчную форму ввода с тремя строками на ней. Я отредактирую данные так, чтобы в строках 2 и 3 были пробелы перед цифрами, и отправлю форму
Журналы logger.info
строк notes value is <QueryDict: {'notes': ['line 1line 2line 3']}>
…. новые строки были удалены.
Почему?
…. и, что еще более важно, как мне их сохранить?
Я действительно whitenoise.middleware.WhiteNoiseMiddleware
импортировал промежуточное место, но я удалил его — это не имело никакого значения
Комментарии:
1. вы используете js для получения значения textarea?
2. @NalinDobhal — как упоминалось в вопросе, я получаю значение с
value = request.GET.get('notes')
….. но даже дамп значенийlogger.info(f"notes value is {request.GET}")
не показывает новых строк