2011-09-15 6 views
0

私はUserAdminPageのテーブルを持っています。ここでは、タグはアルファベット順(下のコード)でリストされています。テーブル内のタグの表示順序を変更する(Google App Engine-Python)

注文を日付順に変更するリンクを追加したいとします。 query.order(owner_tag")query.order("-date")に変更しますが、新しいハンドラを作成する必要はありますか?

質問記号がどこにあるのかわかりません。

おかげ

class UserAdminPage(webapp.RequestHandler): 
    def get(self): 

... 

#-----------tags table-----------------# 
      query = Owner.all() 
      query.filter("owner =", user) 
      query.order("owner_tag") 
      w = query.fetch(500) 

      user_tag_list = [] 
      for item in w: 
       user_tag_list.append(item.owner_tag) 

      unique_tags = sorted(f1.f2(user_tag_list))     

#-----------holding table start--------# 
      self.response.out.write(""" 
      <table border="0" cellpadding="0" cellspacing="20" > 
      <tr> 
      <td>""") 

#-----------tags table start--------#         
      self.response.out.write("""<table border="1"> 
      <tr> 
      <th colspan="3">tags<br /> 
      #the link that will sort by most recent: 
      #<a href="?????">order tags by most recent</a></th> 
      </tr> 
      """)  

      for tag in unique_tags: 

       self.response.out.write(""" 
        <tr> 
        <td><a href="/tag?tag=%s">%s</a></td> 
        </tr> 
        """ % 
        (tag, tag) 
        ) 

      self.response.out.write("""</table>""") 

      #holding table first column end 
      self.response.out.write("""</td>""") 
      #holding table second column start 
      self.response.out.write("""<td style="vertical-align:top">""") 

PER KEVIN Pの答えのように更新CODE:

class UserAdminPage(webapp.RequestHandler): 
    def get(self): 
     order_by = self.request.get("order") 

... 

#-----------tags table-----------------# 
      query = Owner.all() 
      query.filter("owner =", user) 
      if not order_by: 
       query.order("owner_tag") 
      elif order_by == "date": 
       query.order("-date") 
      w = query.fetch(500) 

      user_tag_list = [] 
      for item in w: 
       user_tag_list.append(item.owner_tag) 

      unique_tags = f1.f2(user_tag_list) 

#-----------holding table start--------# 
      self.response.out.write(""" 
      <table border="0" cellpadding="0" cellspacing="20" > 
      <tr> 
      <td>""") 

#-----------tags table start--------#         
#   I put the link here but when I click on it, no table is drawn 
#   because the `for` block below draws the tag table 
#   so I don't understand how I can draw the table with `order=date` 

      self.response.out.write("""<table border="1"> 
      <tr> 
      <th colspan="3">tags<br /> 
      <a href="/tag?order=date"><span id=small>most recent</span></a></th> 
      </tr> 
      """)  

      for tag in unique_tags: 

       self.response.out.write(""" 
        <tr> 
        <td><a href="/tag?tag=%s">%s</a></td> 
        </tr> 
        """ % 
        (tag, tag) 
        ) 

      self.response.out.write("""</table>""") 

... 

答えて

3

これまであなたのアプローチを最適化するために、しかし、あなたの特定の質問に答えるために、いくつかの方法があります - むしろあなたのハンドラを複製するよりも、リンクにGETパラメータを追加し、クエリを構築する際にそれを確認することができます:

class UserAdminPage(webapp.RequestHandler): 
    def get(self): 
     order_by = self.request.get('order') 

     query = Owner.all() 
     query.filter("owner =", user) 
     if not order_by: 
      query.order("owner_tag") 
     elif order_by == 'date': 
      query.order("-date") 

     ... 
     <a href="your_page_url?order=date">order tags by most recent</a> 
+0

答えをありがとう。私はコードを更新し、質問に追加しました。私はこれがどのように動作するはずか分からないので、私はそれがすべき場所にリンクを置いていないと思う。私がクリックすると、タグテーブルは描画されません。言い換えれば、私はまだ、そのページに日付でソートされたテーブルを描画する 'for'ループをどのように含めることができるのか分かりません。再度、感謝します。 – Zeynel

+0

'/ tag'はあなたのテーブルのページのURL(つまりUserAdminPage)ですか?ここでの目標は、追加されたパラメータでページへのリクエストを再開することです。 forループはソートされた順序どおりに結果を繰り返し処理します。 –

+0

[OK]を、私は/ useradminpageにURLを変更し、今は動作します。しかし、これは、両方の "date"パラメータが次のようにマイナス記号で書かれている場合にのみ機能します: 'elif order_by ==" -date ":query.order(" - date ")'そうでなければ 'PropertyError:Invalid property name '日付。なぜなのかご存知ですか?最新のタグを上に置くといいですね。ありがとう – Zeynel

関連する問題