Micolog优化(2):你不能不知的BUG
使用Micolog搭建Blog的人很多,不知有没有谁留意到这个Bug。这个BUG非常的致命,也许引发这个BUG的人并不是有心,但如果是有心的话,可以让你micolog上每一篇文章都显示不出来。
BUG在哪里:只需打开一篇文章,回复一个评论,评论会要求写E-mail,这个E-mail是用来决定显示头像的,但却没有对填写的内容作任何的检查和限制,你只要写含有中文的E-mail,不妨就写一个“中”字在里面,提交评论。再刷新一下,你就发现该页面无法显示,而出现了下面的错误提示,很不友好吧。当然这只会影响有评论的那篇文章,其它文章没有问题。
File "/base/python_lib/versions/1/django/template/__init__.py", line 563, in resolve obj = resolve_variable(self.var, context) File "/base/python_lib/versions/1/django/template/__init__.py", line 656, in resolve_variable current = current() File "/base/data/home/apps/mlog/1.329808355789312518/model.py", line 464, in gravatar_url imgurl +=hashlib.md5(self.email).hexdigest()+"?"+ urllib.urlencode({ UnicodeEncodeError: 'ascii' codec can't encode character u'\u548c' in position 0: ordinal not in range(128)
|
问题的原因已经在上面描述了,因为程序中试图对该字符串转编码失败。这错误信息在micolog作者的主页上也能找到,就是xuming.net(或mlog.appspot.com)首页最下面(他的主页很久没更新了)的一篇文章“发布Micolog0.5版本”,你点开看看(不是我恶搞的)。
注:不要找别人的micolog来测试,在自己的站里测试,测试后可以删除该评论就恢复正常了。如果有人经常这样恶搞你的文章,而自己没这么有空来来删除这样的评论,那攻击者可以在每一篇文章都留这一个这样的评论,那就...
解决办法:
打开model.py,找到class Comment下的函数def gravatar_url,里面有这样的两行:
imgurl = "http://www.gravatar.com/avatar/" imgurl +=hashlib.md5(self.email).hexdigest()+"?"+ urllib.urlencode({ 'd':default, 's':str(size),'r':'G'}) |
用try..except结构把这两行包起来,结果就成了:
try: imgurl = "http://www.gravatar.com/avatar/" imgurl +=hashlib.md5(self.email).hexdigest()+"?"+ urllib.urlencode({ 'd':default, 's':str(size),'r':'G'}) except : imgurl = default |
这样就修复了这个BUG,赶紧增强你的Micolog吧。
注:转载请注明出处http://www.kgblog.net
在单击 单页时就会出错,经过观察,是因为填写了 标签,如果没有标签,好像就能正常显示。
请教一下 这是什么问题!
This query needs this index:
- kind: Entry
properties:
- name: tags
- name: post_id
direction: desc
你先在本地做同样的测试,SDK就能自动生成这些索引再上传。当然你也可以手动在index.yaml中添加这个索引。
用ie7打开 TTP 500 内部服务器错误
网站无法显示该页面
用chrome打开:
A server error occurred. Please contact the administrator.
所以我就 将 index.yaml删除了 ,在本地运行,重新生成了index.yaml.
在本地测试都正常,但上传上去就出现这个问题了,谢谢了,我先按您的方法添加一下看看!
如果你只在本地的默认皮肤一下,写带有tag的文章,这样上传上去,在xuming皮肤下也会出错!!
所以要在两种皮肤下都要打开单页看看,这个生成的index.yaml文件会大一些,全一些。
不知为什么呢 ?
用了try 好像就把那段代码给就不返回了
这样就好了
徐明的博客确实很厉害!
回头把代码给加上。
谢谢,希望可以转载这篇文章!
我的博客:yjtblog.appspot.com
This query needs this index:
- kind: Entry
properties:
- name: tags
- name: post_id
direction: desc
你先在本地做同样的测试,SDK就能自动生成这些索引再上传。当然你也可以手动在index.yaml中添加这个索引。
欢迎访问我的:http://lyhopq.appspot.com/