我想知道是否有一个解决方案,以便在我的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')
当用户填写说明字段时,我想设置实时换行符。如您所见,所有字符串都在同一行。
我怎么能这样做?
答案 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>
)。