如何从 Textarea 中删除 <br/> 标签?
How to remove <br/> tag from Textarea?
我正在使用 Django 构建一个简单的个人网站。我刚刚构建了一个基本的电子邮件表单。这是它的 models.py 文件:
from django.db import models
class Message(models.Model):
name = models.CharField(max_length=200, unique=True)
email = models.EmailField(unique=True)
subject = models.CharField(max_length=100, unique=True)
message = models.CharField(max_length=1000, unique=True)
def __unicode__(self):
return self.name
这里是相应的 forms.py 文件:
from django import forms
from rksite.models import Message
class EmailForm(forms.ModelForm):
name = forms.CharField(max_length=200,help_text="Name:")
email = forms.EmailField(help_text="Email:")
subject = forms.CharField(max_length=100, help_text="Subject:")
message = forms.CharField(max_length=1000, widget=forms.Textarea, help_text="Message:")
class Meta:
model = Message #link the model to the form
最后,我还将在下方添加表单的 html 页面:
{% extends 'rksite/base.html' %}
{% block title %}RaghavKumarContact{% endblock %}
{% block content %}
<h1>Contact Me</h1>
<br />
<form class="span6" id="email_form" method="POST" action="/home/contact/">
{% csrf_token %}
{% for field in form.visible_fields %}
{{ field.errors }}
{{ field.help_text }}
{{ field|linebreaks }}
{% endfor %}
<br />
<button class="btn btn-primary" type="submit" name="send">Send</button>
</form>
{% endblock %}
现在,无论我做什么,"br/" 标签都会显示在 "Message" Textarea 字段中。这是我在我的网页上看到的:
我怎样才能从这个 Textarea 中删除这个标签?
编辑:
如果我没有应用 linebreaks
过滤器,它会是这样的:
换行符过滤器的替代方法是什么?
不要在此处使用 linebreaks
:
{{ field|linebreaks }}
为表单呈现小部件,然后将整个呈现的 HTML 块传递给 linebreaks
过滤器。该过滤器将换行符转换为 <br />
标记,并且 Textarea
小部件的呈现在文本之前包含一个换行符:
def render(self, name, value, attrs=None):
if value is None:
value = ''
final_attrs = self.build_attrs(attrs, name=name)
return format_html('<textarea{}>\r\n{}</textarea>',
flatatt(final_attrs),
force_text(value))
(来源https://github.com/django/django/blob/master/django/forms/widgets.py#L435)
我不确定你为什么要传递字段值 linebreaks
- HTML textarea 应该可以很好地处理消息文本中的常规换行符,如果你是这样的话正在担心。
我正在使用 Django 构建一个简单的个人网站。我刚刚构建了一个基本的电子邮件表单。这是它的 models.py 文件:
from django.db import models
class Message(models.Model):
name = models.CharField(max_length=200, unique=True)
email = models.EmailField(unique=True)
subject = models.CharField(max_length=100, unique=True)
message = models.CharField(max_length=1000, unique=True)
def __unicode__(self):
return self.name
这里是相应的 forms.py 文件:
from django import forms
from rksite.models import Message
class EmailForm(forms.ModelForm):
name = forms.CharField(max_length=200,help_text="Name:")
email = forms.EmailField(help_text="Email:")
subject = forms.CharField(max_length=100, help_text="Subject:")
message = forms.CharField(max_length=1000, widget=forms.Textarea, help_text="Message:")
class Meta:
model = Message #link the model to the form
最后,我还将在下方添加表单的 html 页面:
{% extends 'rksite/base.html' %}
{% block title %}RaghavKumarContact{% endblock %}
{% block content %}
<h1>Contact Me</h1>
<br />
<form class="span6" id="email_form" method="POST" action="/home/contact/">
{% csrf_token %}
{% for field in form.visible_fields %}
{{ field.errors }}
{{ field.help_text }}
{{ field|linebreaks }}
{% endfor %}
<br />
<button class="btn btn-primary" type="submit" name="send">Send</button>
</form>
{% endblock %}
现在,无论我做什么,"br/" 标签都会显示在 "Message" Textarea 字段中。这是我在我的网页上看到的:
我怎样才能从这个 Textarea 中删除这个标签?
编辑:
如果我没有应用 linebreaks
过滤器,它会是这样的:
换行符过滤器的替代方法是什么?
不要在此处使用 linebreaks
:
{{ field|linebreaks }}
为表单呈现小部件,然后将整个呈现的 HTML 块传递给 linebreaks
过滤器。该过滤器将换行符转换为 <br />
标记,并且 Textarea
小部件的呈现在文本之前包含一个换行符:
def render(self, name, value, attrs=None):
if value is None:
value = ''
final_attrs = self.build_attrs(attrs, name=name)
return format_html('<textarea{}>\r\n{}</textarea>',
flatatt(final_attrs),
force_text(value))
(来源https://github.com/django/django/blob/master/django/forms/widgets.py#L435)
我不确定你为什么要传递字段值 linebreaks
- HTML textarea 应该可以很好地处理消息文本中的常规换行符,如果你是这样的话正在担心。