我正在显示用户提供的编辑页面。用户在textarea中输入一些带有输入按钮的文本并点击预览按钮。在预览页面中,他看到了他给出的内容(我正在用<br>
替换\ n&#39; s)。
我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/>
并将新的输入文本放入隐藏的textarea中,以便我以后再渲染预览。
在我的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和安全过滤器是否有特殊情况?
更新:
如果我对textarea {{inputtext|safe}}
感到满意,那么效果很好(显示为linebreak-ed)。仅在textarea内部,|safe
无论如何都没有效果
答案 0 :(得分:2)
我认为问题在于您无法在textarea中显示html
输出。 linebreaks
只需使用br
和p
代码替换换行符。
为什么在代码中将换行符替换为br
?如果您只想预览文本,但未显示换行符,请使用css-styles white-space: pre-wrap
。这将显示输入的文字。