在Django CharField表单中插入换行符

时间:2017-07-24 09:22:19

标签: django django-forms

我想知道是否有一个解决方案,以便在我的Django Charfield表单中创建多个换行符。

我有一个字段Description,我想写一些内容,如:

Hello,

My name is John.
I am 23 years old.

Is it possible to help me ?

不幸的是,到目前为止我已经:

Hello, My name is John. I am 23 years old. Is it possible to help me ?

我的模特看起来像:

class Ticket(models.Model):

    ...
    Description = models.CharField(max_length=250, verbose_name='Description')

enter image description here

当用户填写说明字段时,我想设置实时换行符。如您所见,所有字符串都在同一行。

我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

我找到了解决方案。我将models.CharField替换为models.TextArea

Description = models.TextField(max_length=250, verbose_name='Description')

然后在我的模板中,我设置:

{{value|linebreaks}}

它有效!我可以使用Caps + Enter

创建换行符

答案 1 :(得分:0)

我有一个用例,我想允许渲染换行符,以及将字段中的字符数限制为固定数量(类似于在配置文件中添加生物字段)。 您可以结合使用“模板”和“表单”中的某些概念来实现这一目标。

在模型中,将字段定义为常规CharField

description = models.CharField(max_length=250)

在您的表单中,按如下所示初始化字段:

description = forms.CharField(max_length=250, widget=forms.Textarea(attrs={'rows':4, 'cols':15}))

在此处将小部件用作Textarea很重要,因为如果使用默认的TextInput小部件,它将在按下Enter时提交表单,而不是插入换行符。您可以使用attrs格来更改要渲染的Textarea的大小。

现在,最后要在模板内使用换行符正确显示内容,请应用linebreaks Django过滤器:

<p>{{ user.profile.description|linebreaks }}</p>    

linebreaks过滤器用适当的HTML替换纯文本中的换行符;单个换行符变成HTML换行符(<br>),而后跟空白行的换行符变成段落换行符(</p>)。