首页 > micolog > 修正micolog文章中前一post与后一post的混乱问题

修正micolog文章中前一post与后一post的混乱问题

2009年7月24日 闫鹏 发表评论 阅读评论

yanjingtu童鞋留言说,文章详情页中的上一篇与下一篇是不正确的,问能不能修复,我观察了一下,发现模板中用的是entry的next属性与prev属性。所以就跑到model.py去查看,果然徐老大的代码是按照post_id来排序而不是时间。

此文章是在踩坑后极度郁闷的情况下写的,不喜欢废话的童鞋请直接看红色字

想着改起来也很简单啦,就是把model.py文件中大概406行的函数体改成

[code lang='python' style='vs']

return Entry.all().filter('entrytype =','post').filter('published =', True).order('date').filter('date >', self.date).fetch(1)

[/code]

大概414行改成

[code lang='python' style='vs']

return Entry.all().filter('entrytype =','post').filter("published =", True).order('-date').filter('date <',self.date).fetch(1)

[/code]

本以为上传后就ok了呢,结果……苍天啊,大地啊,万恶的google啊,点击详情页总是返回500。尝试只修改414行那个就没问题,一修改406行那个就500。最后实在不明白咋回事了,只好乱翻google的文档(虽然这个还从来没有好好看过一遍),后来发现里面有个索引配置,不会如果没配置索引,google就拒绝查询请求吧。于是查找index.yaml文件,发现里面确实是有一条索引正好能用的
[code lang='yaml' style='vs']

- kind: Entry
   properties:
   - name: entrytype
   - name: published
   - name: date
      direction: desc

[/code]

但是direction只能满足要修改的414行查询,不能满足要修改的406行查询,难道建的索引还这么傻?于是在index.yaml中添加

[code lang='yaml' style='vs']

- kind: Entry
   properties:
   - name: entrytype
   - name: published
   - name: date

[/code]

又试了一下,问题解决(如果你的数据多,可能在短时间内会出现500错误,稍等2分钟应该就会好),看来google这个真的弄得那么傻…今天算是踩到大坑上了,以后一定要把文档仔细看一遍,整整两个小时啊

感谢yanjingtu同学报的两个bug~~,另外这个页面ie6下错位的问题我手头没有ie6,先等一段时间改哈

您可能会喜欢:

  1. 提供我改过的micolog代码下载
  2. 升级并小修正micolog相关文章功能
  3. 为micolog增加热门文章功能
  4. 修正micolog页码输出从零开始的问题
  5. 为micolog增加随机文章功能
分类: micolog 标签:

  1. 2009年7月25日02:12 | #1

    ie6的市场占有率还是在60%多呢,加油哦,要优化博客才好

  2. 2009年7月25日02:10 | #2

    谢谢啦,确实好了!很好很强大!

    我的博客在IE下的显示也有点不正常了,想换IE7了。。。

  3. 2009年7月31日08:23 | #3

    晕,google出错居然是这个问题,我之前改代码的时候也碰到了,刚好。

  4. 2009年9月7日04:44 | #4

    @houkai

    请教个问题 python如果判断两个字符串相等 比如 判断comment.email如果是hikefreeman@gmail.com,我用了以下方法都不对。我是在html里用的。

    {%if comment.email=="hikefreeman@gmail.com" %}

    {%if comment.email==‘hikefreeman@gmail.com’ %}

    {%if comment.email<>‘hikefreeman@gmail.com’ %}

    {%if {{comment.email}}==‘hikefreeman@gmail.com’ %}

    请给个正确的答案。谢谢

    用ifequal吧 ,比如:
    {% ifequal user.username "adrian" %}

    {% endifequal %}

  5. 2009年9月7日04:51 | #5

    谢谢 搞定!!!

  6. 2009年9月7日04:09 | #6

    请教个问题 python如果判断两个字符串相等 比如 判断comment.email如果是hikefreeman@gmail.com,我用了以下方法都不对。我是在html里用的。

    {%if comment.email=="hikefreeman@gmail.com" %}

    {%if comment.email==‘hikefreeman@gmail.com’ %}

    {%if comment.email<>‘hikefreeman@gmail.com’ %}

    {%if {{comment.email}}==‘hikefreeman@gmail.com’ %}

    请给个正确的答案。谢谢

  1. 本文目前尚无任何 trackbacks 和 pingbacks.