javascript - “安全”过滤器在 textarea 中不起作用 - django

标签 javascript html django django-templates

我正在显示用户提供内容的编辑页面。用户在文本区域中输入带有输入按钮的文本,然后点击预览按钮。在预览页面中,他只看到了他给出的内容(我正在用 <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<br/>并将新的输入文本放入隐藏的文本区域,以便我稍后可以渲染它以进行预览。

在我的 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 和 safe filter 是否有一些特殊情况?

更新:

如果我这样做 {{inputtext|safe}}在 textarea 之外,它运行良好(显示换行符)。仅在文本区域内部,|safe不知何故没有效果

最佳答案

我认为问题在于您无法在文本区域中显示 html 输出。 linebreaks 只是将换行符替换为 brp 标签。

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

关于javascript - “安全”过滤器在 textarea 中不起作用 - django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23848006/

相关文章:

html - 如何在 html/css 中对齐 'a' 元素

android - 从 Android 发送 POST json 并在 Django 上接收

python - 我怎样才能从Python列表中制作树状菜单

javascript - 如何在 ng-repeat 中使用 ng-switch 来编辑 JSON API 数据

javascript - 如何将 JSON 对象数组传递给 MVC Controller ?

html - 如何使用 HTML5 拖放获取源 ID

jquery - 是什么导致了这种奇怪的顶部边距定位边缘情况?

python - 如何让 Django 的错误邮件报告 `locals()` ?

javascript - 从 asp.net 3.5 升级到 asp.net 4.0 会导致某些回发出现 javascript 错误

javascript - 如何使用 html 中的 Vue.js 从 Web 服务获取数据?