Как сделать, что бы переносились строки при генерации из шаблона так же как и были введены в textarea?

219
02 марта 2018, 15:38

Я ввожу текст в форму, используя textarea (переносы строк важны):

Первая строка

Вторая строка

Третья строка

Однако, когда джанго генерирует, это получается в виде:

Первая строка Вторая строка Третья строка

Как исправить?

# workouts/urls.py    
from django.conf.urls import url
from .views import AddWorkoutView
from .views import WorkoutsListView
app_name = 'workouts'    
urlpatterns = [
    url(r'^add$', AddWorkoutView.as_view(), name="add_workout"),
    url(r'^list$', WorkoutsListView.as_view(), name="workouts_list"),
]      
# workouts/views.py
from django.views.generic import FormView, ListView
from .forms import AddWorkoutForm
from .models import Workout
class AddWorkoutView(FormView):
    template_name = "workouts/add_workout.html"
    form_class = AddWorkoutForm
    success_url = '/success'
    def form_valid(self, form):
        form.handle_valid_form()
        return super(AddWorkoutView, self).form_valid(form)
class WorkoutsListView(ListView):
    model = Workout
    template_name = "workouts/workouts_list.html"
    def get_context_data(self, **kwargs):
        context = super(WorkoutsListView, self).get_context_data(**kwargs)
        context['workout'] = self.model
        return context
# workouts/models.py 
from django.db import models
from django.db.models import CharField
class Workout(models.Model):
    workout_text = CharField(max_length=500)
    def __str__(self):
        return self.workout_text
# workouts/forms.py 
class AddWorkoutForm(forms.Form):
    workout_text = forms.CharField(max_length=500, widget=forms.Textarea)
    def handle_valid_form(self):
        workout_text = self.cleaned_data['workout_text']
        new_workout = Workout.objects.create(workout_text=workout_text)
        new_workout.save()
<!--add_workout.html-->
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Добавление тренировки</title>
</head>
<body>
<form method="post" action="{% url "workouts:add_workout" %}">
    {% csrf_token %}
    {{ form }}
    <br>
    <input type="submit" value="Отправить">
</form>
</body>
</html>
<!--workouts_list.html-->
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Тренировки</title>
</head>
<body>
<h1>Тренировки</h1>
<ul>
    {% for workout in object_list %}
        <li>{{ workout.workout_text }}</li>
        {% empty %}
        <li>Тренировок еще не было</li>
    {% endfor %}
</ul>
</body>
</html>
Answer 1

Можно воспользоваться фильтром linebreaks

{{ workout.workout_text|linebreaks }}
READ ALSO
Не работает сетка бутстрапа

Не работает сетка бутстрапа

Вернее, он работает, но не так как я хотел быЯ задаю блокам, которые стоят в

282
Почему происходит движение блоков в iOS

Почему происходит движение блоков в iOS

Всем доброго дня! В первый раз столкнулся с такой проблемой на айфонах http://dropmefilescom/lq8bu - ссылка на демонстрацию заказчика

257
Как лучше всего разметить шаблон сайта?

Как лучше всего разметить шаблон сайта?

Доброго времени сутокПодскажите как лучше всего в HTML разметить такой шаблон? Таблицей?

231