При размещении формы теряются абзацы
Здравствуйте, я создаю форум с использованием django. Когда пользователь создает тему, то написанный им текст (в поле ввода {{obj.content}}) должен отображаться именно так, как он его набрал. Текст отображается через {{form.content}}.
То есть абзацы, которые были сделаны пользователем, должны сохраняться. Но в данный момент они теряются и текст отображается без абзацев.
create_thread.py (на этой странице можно создать поток):
{% extends "forum/index.html" %}
{% load static %}
{% block title %} {{post.title}} {% endblock %}
{% block content %}
{% for obj in objects %}
<div class="container-thread">
<div class="username">{{obj.username}}</div>
<div class="topic">{{obj.topic}}</div>
<div class="content">{{obj.content}}</div>
</div>
{% endfor %}
{% endblock %}
thread.html (на этой странице отображается тема):
<div class="container-create-thread">
<h2 class="heading-create-thread">Create a thread</h2>
<form method="POST" action="">
{% csrf_token %}
<label class="label-topic">Topic</label>
{{form.topic}}
<label class="label-title">Title</label>
{{form.title}}
<label class="label-content">Content</label>
{{form.content}}
<button class="btn submit" id="submit-create-thread" type="submit" value="submit">Submit</button>
</form>
</div>
Абзацы, вероятно, не потеряны. Происходит то, что разрывы строк в тексте внутри HTML не отображаются как разрывы строк при отображении на странице.
Вам необходимо заменить переносы строк на <br>. Вы также должны заменить < на < и > на >. В противном случае ваша страница будет уязвима для инъекции скрипта.
Вы можете проверить это сейчас: введите <script>window.alert('hello')</script> в форму и посмотрите, что произойдет, когда вы отправите форму.
@md2perpe не ошибается, но, возможно, более кратким ответом было бы:
{{ form.content|linebreaks }}