Python 为什么这个光标不工作?

Python 为什么这个光标不工作?,python,google-app-engine,cursor,Python,Google App Engine,Cursor,你知道为什么这个光标不工作吗?当我点击“更多结果”时,不会显示其他结果。谢谢 if n==1: query = Main.all() query.filter("tag_list", s[0]) query.order("-date") cursor = self.request.get("cursor") if cursor: query.with_cursor(cursor) items = query.fetch(2) cursor

你知道为什么这个光标不工作吗?当我点击“更多结果”时,不会显示其他结果。谢谢

if n==1:
    query = Main.all()
    query.filter("tag_list", s[0])
    query.order("-date")
    cursor = self.request.get("cursor")
    if cursor: query.with_cursor(cursor)
    items = query.fetch(2)
    cursor = query.cursor()            

    for item in items:
        main_id = item.key().id()                                     
        self.response.out.write("""<p>
        <a href="%s" target="_blank"><span id=large>%s</span></a> 
        <a href="/comment?main_id=%s"><span id="small">comments</span></a><br />  
        %s <a href="/edit?main_id=%s&url_path=/searchhandler?search_string=%s"><span id="small">edit</span></a>
        </p>
        """ %           
        (item.url, item.title, main_id, 
        f1.truncate_at_space(item.pitch), main_id, search_string))

    self.response.out.write('<a href="/searchhandler?cursor=%s">More Results</a>' % cursor)
编辑2

按照Dave Smith的建议解决问题:

class SearchHandler(webapp.RequestHandler):
    def get(self):        
...
        search_string = self.request.get("search_string")

        if search_string:
            s = filter(None, f1.striplist(self.request.get("search_string").split(" ")))
            self.response.out.write("""
            <form name="search_form" action="/searchhandler" method="get"><br />
            <input type="text" name="search_string" size=40 value="%s">
            <input type="submit" value="search tags">
            </form> """ % search_string)
        else:
            ss = self.request.get("ss")
            s = filter(None, f1.striplist(self.request.get("ss").split(" ")))
            self.response.out.write("""
            <form name="search_form" action="/searchhandler" method="get"><br />
            <input type="text" name="search_string" size=40 value="%s">
            <input type="submit" value="search tags">
            </form> """ % ss)

        n = len(s)

        if n==1:
            query = Main.all()
            query.filter("tag_list", s[0])
            query.order("-date")

            cursor = self.request.get("cursor")
            if cursor: query.with_cursor(cursor)
            items = query.fetch(7)
            cursor = query.cursor()

...                    
                self.response.out.write("""<a href="/searchhandler?cursor=%s&ss=%s">More Results</a>""" % tuple([cursor, search_string]))
...                           
类SearchHandler(webapp.RequestHandler):
def get(自我):
...
search\u string=self.request.get(“search\u string”)
如果搜索字符串:
s=过滤器(无,f1.striplist(self.request.get(“搜索字符串”).split(“”))
self.response.out.write(“”)

“”“%search\u字符串) 其他: ss=self.request.get(“ss”) s=过滤器(无,f1.striplist(self.request.get(“ss”).split(“”)) self.response.out.write(“”)
“”%ss) n=长(s) 如果n==1: query=Main.all() query.filter(“标记列表”,s[0]) 查询订单(“-日期”) cursor=self.request.get(“cursor”) if cursor:query.with_cursor(游标) items=query.fetch(7) cursor=query.cursor() ... self.response.out.write(“”%tuple([cursor,search\u string])) ...
假设代码在处理程序中,那么每次调用的
s[0]
是否相同?游标仅对相同声明的查询起作用。如果
s[0]
更改,则查询将更改,以前保存的光标将无法使用它。

您的查询在哪里?你怎么知道还有更多的结果呢?我在问题中添加了这个问题。我使用
items=query.fetch(10)
进行了测试,共有4项与此查询匹配。谢谢,非常感谢!这正是问题所在。我从搜索表单中获取
s
,但在游标之后(当我单击“更多结果”时),搜索表单为空,
s=[]
,因此我假设这是一个不同的查询,不会返回任何结果。你知道怎么解决这个问题吗?我用包含日志信息的代码编辑了这个问题。再次感谢。在您的位置上,我会在URL中包含前面的s[0]值以及光标。然后,如果值已更改,我将删除保存的光标并从头开始查询。谢谢!我在上面添加了解决方案。也许问一个新问题会更好,但我还想添加分页,以便人们可以返回到以前的结果。我只能找到Java的相关代码:您能提供一些关于如何在Python中进行分页的线索吗?再次感谢。
class SearchHandler(webapp.RequestHandler):
    def get(self):        
...
        search_string = self.request.get("search_string")

        if search_string:
            s = filter(None, f1.striplist(self.request.get("search_string").split(" ")))
            self.response.out.write("""
            <form name="search_form" action="/searchhandler" method="get"><br />
            <input type="text" name="search_string" size=40 value="%s">
            <input type="submit" value="search tags">
            </form> """ % search_string)
        else:
            ss = self.request.get("ss")
            s = filter(None, f1.striplist(self.request.get("ss").split(" ")))
            self.response.out.write("""
            <form name="search_form" action="/searchhandler" method="get"><br />
            <input type="text" name="search_string" size=40 value="%s">
            <input type="submit" value="search tags">
            </form> """ % ss)

        n = len(s)

        if n==1:
            query = Main.all()
            query.filter("tag_list", s[0])
            query.order("-date")

            cursor = self.request.get("cursor")
            if cursor: query.with_cursor(cursor)
            items = query.fetch(7)
            cursor = query.cursor()

...                    
                self.response.out.write("""<a href="/searchhandler?cursor=%s&ss=%s">More Results</a>""" % tuple([cursor, search_string]))
...