📜  如何在 django 中的 textarea 上保存刹车线 - Python (1)

📅  最后修改于: 2023-12-03 14:52:16.699000             🧑  作者: Mango

如何在 Django 中的 TextArea 上保存换行

在 Django 中,如果你在某一个表单中使用了 TextArea 控件,用户在输入多行文本时,文本中的换行符并不会被正确保存到数据库中。这是因为 Django 的默认行为是将换行符替换为 HTML 的 <br> 标签,这会导致保存到数据库中的文本出现多余的的 <br> 标签。

为了解决这个问题,你需要在表单中将提交的文本进行处理,将其中的换行符替换为数据库中支持的换行符。以下是一个示例:

表单
class MyForm(forms.Form):
    text_field = forms.CharField(widget=forms.Textarea)
视图
from django.views.generic.edit import FormView

class MyFormView(FormView):
    form_class = MyForm
    template_name = 'my_template.html'
    success_url = '/thanks/'

    def form_valid(self, form):
        # 处理文本中的换行符,将其转换为数据库支持的换行符
        form.cleaned_data['text_field'] = form.cleaned_data['text_field'].replace('\r\n', '\n').replace('\r', '\n')

        # 保存数据到数据库中
        # ...
        return super().form_valid(form)

在上面的代码中,我们使用了 replace 函数将换行符 \r\n\r 替换为数据库支持的换行符 \n,然后将处理后的文本赋值给表单的 cleaned_data 字典中的 text_field 键。

在这个示例中我们使用了 FormView 来处理表单的提交,当表单提交成功时,执行 form_valid 方法来处理保存发操作。你也可以使用其他的方法来处理表单的提交,比如 CBV 中的 CreateView 等。

除此之外,你还可以使用一些第三方库,比如 django-crispy-forms 来便捷地处理 Django 表单的各种问题。

希望这篇文章能够帮助到你在 Django 中正确地保存 TextArea 上的换行符。