При размещении формы теряются абзацы

Здравствуйте, я создаю форум с использованием 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>. Вы также должны заменить < на &lt; и > на &gt;. В противном случае ваша страница будет уязвима для инъекции скрипта.

Вы можете проверить это сейчас: введите <script>window.alert('hello')</script> в форму и посмотрите, что произойдет, когда вы отправите форму.

@md2perpe не ошибается, но, возможно, более кратким ответом было бы:

{{ form.content|linebreaks }}

Вернуться на верх