Изменение порядка отображения тегов в таблице (Google App Engine-Python) - PullRequest
0 голосов
/ 15 сентября 2011

У меня есть таблица в UserAdminPage, где теги перечислены в алфавитном порядке (код ниже).

Я хочу добавить ссылку, которая изменит порядок на дату.Я знаю, что изменит 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">""")

ОБНОВЛЕННЫЙ КОД КАК ОТВЕТ КЕВИНА П.1014 *

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>""")  

...

1 Ответ

3 голосов
/ 15 сентября 2011

Есть несколько способов оптимизировать ваш подход к этому, но чтобы ответить на ваш конкретный вопрос - вместо дублирования вашего обработчика вы можете добавить параметр 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...