我正在显示用户提供内容的编辑页面。用户在文本区域中输入带有输入按钮的文本,然后点击预览按钮。在预览页面中,他只看到了他给出的内容(我正在用 <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
只是将换行符替换为 br
和 p
标签。
为什么要在代码中将换行符替换为 br
?如果你只想预览文本,但没有显示换行符,请使用 css-styles white-space: pre-wrap
然后。这将显示输入的文本。
关于javascript - “安全”过滤器在 textarea 中不起作用 - django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23848006/