if you want to add a dictionary structure into a list, what would you write?
mylist = []
val = {}
for i in Range(1,3)
val ={'id':i,'name':'item1'}
mylist.append(val)
Then you will see 3 same id in list.
So you should write:
mylist = []
for i in Range(1,3)
val={}
val ={'id':i,'name':'item1'}
mylist.append(val)
Now Tidyboard is available for digest. It will display a digest of message and you click on the title, all the content will display.
It is the first time to write a brief design before writing code. It's an amazing action. At first time, I realize the steps of programming. After comparing of my draft and the real record of actions, I find out that there's some problem can be previewed but missed.
Whatever, I think that's the most important part of silver bullet.
我曾经很傻很天真的认为,css就是一个起装饰作用的风格文件,似乎,总是可有可无。而今天,我真的败了。
留言本程序出现了一个BUG,无法换行。在textarea里输入回车后,python报不支持多行数据错误。我意识到应该在model中content属性是将多行设置为false。
改正后,发现投递没有回车的程序确实是很好(以前不一直这样吗),加上回车以后,显示投递成功,但是更新后却连以前没有回车投递的留言也没有显示出来了。python终端也没有报错,显然,这是数据成功的更新到了数据库,只是在update到本地时候发生了错误。我用wireshark抓取了一下包。正好仿照的VxTodo里面也有这样的流程,于是,比较了一下包。
比如我输入的是asdf[回车]asdf,其中其它的字母都用ascii表示,回车的表示就不同了。我使用的是25 30 41,而vxtodo使用的是25 35 43 6e。因为这是在post方法中,使用了urlencoded,查阅了一下表,原来我使用的是特殊字符换行,而vxtodo是用\n的字母表示分别转义的。可想而知,POST方法解码后,我的变成了asdf[/0a]asdf,而vxtodo变成了asdf\nasdf。
这样就清楚了,这个数据在写回JSON表达式后发生了问题。继续追踪JSON表达式中的值。JSON中,果然是禁止使用0a,0d这样ASCII码的,因为作为了JSON的分段标志。而在我的表达式中Content包好了0A使得JSON表达式断裂了。于是,引用了vxtodo的方法,在js脚本中将所有的\n替换为\\n,注意,这是无任何转义意义的\n,就是两个字符。
这样就基本解决了JSON断裂问题。下面就是显示的问题了。加入了replace语句后,发现确实是可以显示了,但是,总是把\n作为空格显示。我实在想不到答案了,看了一下html的css文件。果然,一行诡异的代码静悄悄的等待着我:
white-space:pre;
找了一下参考:
normal : 默认处理方式
pre : 用等宽字体显示预先格式化的文本。不合并字间的空白距离和进行两端对齐。参阅pre对象
nowrap : 强制在同一行内显示所有文本,直到文本结束或者遭遇br对象。参阅td,div等对象的nowrap属性(特性)
其实这个属性似乎和处理\n根本没啥联系。然而,选取了pre以后,系统确实将\n解释为回车了,thanks god。
到这里终于解决了不能输入回车的问题。还是感谢vxtodo,能够做的这么细致,也让我感受到了经验在网站界面写作中的重要性了。
最新评论
友情链接