html - 为什么在 'new line' 或 'POST' 请求后 django 模板中缺少一个 'GET'?

标签 html textarea html-parsing

表单验证后,我的文本区域丢失了它的第一行。

显示textarea的结果页面与用户输入数据的页面对应相同的 View 和模板。换句话说,页面是相同的。

在我的代码中我有这样的东西:

if request.method == 'POST':
    f = MyForm( request.POST )
    if f.is_valid(): # f is a form
        context.update( value = f.cleaned_data[ 'value' ] )
        # then 'value' becomes a 'value' context variable for a template.

来自模板的片段:

...
<textarea name='value'>{{value}}</textarea> 
<!-- It's a template for a result page -->
...

有趣的是,如果文本区域在开头有许多 '\n' 行,那么对于每个 'POST' 请求,它会在结果页面中丢失其中之一(并且其中之一),其中发布的数据显示在文本区域中。

有人可以帮忙吗?如何在不破解代码的情况下解决问题?

我希望 textarea 显示用户在前一页上输入的所有以 '\n' 开头的行。

更多

数据通常来自客户端 - 如果我们在 View 中输出“值”,则不会丢失任何换行符。问题是在模板中进一步显示。

环境:Windows、Firefox/Opera。

最佳答案

你确定这是 Django 特有的吗?

<html>
<body>
<textarea>`[CR]LF`
`[CR]LF`
test</textarea>    
</body>
</html>

保存为普通 .html 文件时,我的浏览器中只有一个换行符。浏览器仅将第一个换行符作为“HTML 代码格式”,而不是值的一部分。

编辑

你应该能够通过像这样修改你的模板来解决这个问题:

<textarea name='value'>
{{value}}</textarea> 
<!-- It's a template for a result page -->

只有第一个之后的换行符才会显示在框中(即,如果有 3 个,则得到 2 个,如果有 2 个,则得到 1 个,如果有 1 个,则得到 0 个,如果有 0 个,则再次得到 0 个)。这是因为您的浏览器将第一个换行符作为标记的一部分使用,因此将模板更改为已包含第一个换行符应该可以解决您的问题。

关于html - 为什么在 'new line' 或 'POST' 请求后 django 模板中缺少一个 'GET'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15554545/

相关文章:

html - No-Children-But-Not-Empty 的 CSS 选择器

javascript - HTML/JS : Define onClick and onAuxClick at the same time?

java - 混合 HTML 和 STRUTS2 标签

javascript - 如何获取文本区域的旧值

mysql - 从 HTML 页面导入 JSONP 数据,然后导出到 CSV

javascript - 通过尖括号中的 id 获取元素

javascript - 简单的 html textarea/contenteditable 文本编辑器组件支持谷歌浏览器的链接、撤消、tab-in/outdent

http - 如何模拟完整浏览器对 HTML 文档的请求?

Android HTML 解析器示例

css - overflow:auto 当 textarea 默认有内容时?