【问题标题】:'safe' filter is not working in textarea - django“安全”过滤器在 textarea 中不起作用 - django
【发布时间】:2014-07-13 22:07:18
【问题描述】:

我正在显示用户给出的编辑页面。用户在文本区域中使用输入按钮提供一些文本并点击预览按钮。在预览页面中,他看到了他给出的内容(我正在用<br> 替换\n)。

我是safe他的输入像这样{{inputtext|safe}}。但是,如果他点击编辑按钮,我在其中呈现此预览输入文本,输入文本将显示为:text</br></br>text,而不像预览页面中的那样。

预览中的html:

{{inputtext|safe}}
<input type="hidden" name="inputtext" value="{{inputtext}}" />

输入页面中的html:

<textarea>{{inputtext|safe}}</textarea>
<textarea name="inputtext" style="display: none">{{inputtext}}</textarea>

我所做的是:获取用户的输入,将所有\n 替换为&lt;br/&gt; 并将新的输入文本放入隐藏的文本区域,以便稍后渲染它以进行预览。

在我的views.py 中,我只是渲染。那里什么都没有发生:

def addcontent(request):
   if request.POST.get('inputtext'):
       inputtext = request.POST.get('inputtext')
       return render(request, 'addpage.html', {'inputtext':inputtext})
   else:
       return render(request, 'addpage.html', {})

为什么即使我很安全,文本也不显示换行符?我也试过|linebreaks但没有成功

文本区域和安全过滤器是否有一些特殊情况?

更新

如果我在 textarea 之外使用{{inputtext|safe}},它会运行良好(显示换行符)。仅在 textarea 内部,|safe 以某种方式不起作用

【问题讨论】:

  • 你能显示表单和视图代码吗?谢谢。
  • @alecxe 我更新了代码。

标签: javascript html django django-templates


【解决方案1】:

我认为问题在于您无法在 textarea 中显示 html 输出。 linebreaks 只需将换行符替换为 brp 标签即可。

为什么在代码中将换行符替换为br?如果您只想预览文本,但没有显示换行符,请使用 css-styles white-space: pre-wrap 然后。这将显示输入的文本。

【讨论】:

    猜你喜欢
    • 2016-10-08
    • 2018-02-09
    • 2018-05-04
    • 2020-06-07
    • 2018-12-14
    • 2014-10-10
    • 2016-01-10
    • 1970-01-01
    • 2013-04-14
    相关资源
    最近更新 更多