2

最初に、以前に同様の質問をしたことを述べたいと思いますが、この質問にもっと方向性を与えたいと思います。Python、アプリ エンジン、特に jquery の初心者として、これは非常に困難な作業であることが判明しています。誰かが私を正しい方向に向けることができるかどうか(おそらくアプリエンジン自体でこれを行う方法)、そしておそらく私がここで何をすべきかを概説するほど親切であるかどうか疑問に思っていました.

以下は、私のプロフィール ページで投稿を取得するコードです。

私が今持っているのは Query オブジェクトです:

 posts = db.GqlQuery("select * from Profile_Comments WHERE name_of_profile =:1 order by date_created desc", profile_id)

そして、投稿を取得する私の jinja テンプレートの for ループ:

{% for post_tmp in posts %}

        {{post_tmp.post.replace('\r\n', '<br>') | safe }}

{%  endfor %}

本当にありがとう!そして疑似再投稿すみません!

編集 - プロファイル ハンドラ全体 (テンプレートは上に掲載されています...単純な for ループです):

  class Profile(MainHandler):
    def get(self, profile_id):
        u = User.by_name(profile_id.lower())
        if not u:
            self.redirect('/')
        if self.user and profile_id:
            current_user = self.user.name
            name1 = ''
            friend_name = ''
            team_imagee = ''
            key = ''
            monthss = ''
            yearss = ''
            dayss = ''
            countryss = ''
            team_imagee2 = ''
            imgs2 = ''
            imgs = ''
            key2 = ''
            name22 = ''
            name2 = ''
            handless = ''
            msgg = ''
            imgs  = db.GqlQuery("select * from Profile_Images WHERE name =:1", profile_id)
            imgs2  = db.GqlQuery("select * from Profile_Images WHERE name =:1", current_user)
            team_name  = db.GqlQuery("select * from Teams WHERE name =:1", profile_id)
            team_images  = db.GqlQuery("select * from Teamimg WHERE user =:1", profile_id)
            team_images2  = db.GqlQuery("select * from Teamimg WHERE user =:1", current_user)
            friends  = db.GqlQuery("select * from Friends WHERE name =:1 order by added_date desc limit 10", profile_id)
            posts = db.GqlQuery("select * from Profile_Comments WHERE name_of_profile =:1 order by date_created desc", profile_id)
            name2 = db.GqlQuery("select * from User WHERE name =:1", profile_id)
            month = db.GqlQuery("select * from User WHERE name =:1", profile_id)
            day = db.GqlQuery("select * from User WHERE name =:1", profile_id)
            year = db.GqlQuery("select * from User WHERE name =:1", profile_id)
            country = db.GqlQuery("select * from User WHERE name =:1", profile_id)
            handle  = db.GqlQuery("select * from Handle WHERE name =:1", profile_id)
            rating = db.GqlQuery("select * from Rating WHERE name_of_profile =:1", profile_id)
            profile_msg = db.GqlQuery("select * from Profile_Msg WHERE name =:1", profile_id)
            for handles in handle:
                handless = handles.handle_name
            for months in month:
                monthss = months.month
            for countrys in country:
                countryss = countrys.country
            for days in day:
                dayss = days.day
            for years in year:
                yearss = years.year
            for clan in team_name:
                    name1 = clan.team_name_anycase
            for clan in team_name:
                    name2 = clan.team_name
            for image in team_images:
                team_imagee = image.key()
            for image2 in team_images2:
                team_imagee2 = image2.key()
            for img in imgs:
                key = img.key()
            for img2 in imgs2:
                key2 = img2.key()
            for msg in profile_msg:
                    msgg = msg.msg       
            self.render('profile.html', msg = msgg, team_name2 = name2, handle_var = handless,  imgs = imgs, team_img2 = team_imagee2, profile_image_posted = key2, posts = posts, profile_id = profile_id, country_var = countryss, day_var = dayss, year_var = yearss, month_var = monthss, current_user = current_user, friends = friends, team_img = team_imagee, team_name = name1, profile_image = key, username = self.user.name, email = self.user.email, firstname = self.user.first_name, last_name = self.user.last_name, country = self.user.country)
        else:
            self.redirect('/register')


    def post(self, profile_id):
        if self.user and profile_id:
            current_user = self.user.name
            name1 = ''
            friend_name = ''
            team_imagee = ''
            key = ''
            monthss = ''
            yearss = ''
            dayss = ''
            countryss = ''
            team_imagee2 = ''
            imgs2 = ''
            imgs = ''
            key2 = ''
            name22 = ''
            name2 = ''
            handless = ''
            msgg = ''
            imgs  = db.GqlQuery("select * from Profile_Images WHERE name =:1", profile_id)
            imgs2  = db.GqlQuery("select * from Profile_Images WHERE name =:1", current_user)
            team_name  = db.GqlQuery("select * from Teams WHERE name =:1", profile_id)
            team_images  = db.GqlQuery("select * from Teamimg WHERE user =:1", profile_id)
            team_images2  = db.GqlQuery("select * from Teamimg WHERE user =:1", current_user)
            friends  = db.GqlQuery("select * from Friends WHERE name =:1 order by added_date desc limit 10", profile_id)
            posts = db.GqlQuery("select * from Profile_Comments WHERE name_of_profile =:1 order by date_created desc", profile_id)
            name2 = db.GqlQuery("select * from User WHERE name =:1", profile_id)
            month = db.GqlQuery("select * from User WHERE name =:1", profile_id)
            day = db.GqlQuery("select * from User WHERE name =:1", profile_id)
            year = db.GqlQuery("select * from User WHERE name =:1", profile_id)
            country = db.GqlQuery("select * from User WHERE name =:1", profile_id)
            handle  = db.GqlQuery("select * from Handle WHERE name =:1", profile_id)
            for handles in handle:
                handless = handles.handle_name
            for months in month:
                monthss = months.month
            for countrys in country:
                countryss = countrys.country
            for days in day:
                dayss = days.day
            for years in year:
                yearss = years.year
            for clan in team_name:
                    name1 = clan.team_name_anycase
            for clan in team_name:
                    name2 = clan.team_name
            for image in team_images:
                team_imagee = image.key()
            for image2 in team_images2:
                team_imagee2 = image2.key()
            for img in imgs:
                key = img.key()
            for img2 in imgs2:
                key2 = img2.key()
            profile_submit_comment=''
            post_check = self.request.get('profile_submit_comment')
            if self.request.get('delete'):
                the_post = self.request.get('delete')
                q = Profile_Comments.get_by_id(int(the_post), parent=None)
                db.delete(q)
                error = "Comment successfully deleted."
                self.render('profile.html', handle_var = handless, team_name2 = name2, error = error, imgs = imgs, team_img2 = team_imagee2, profile_image_posted = key2, posts = posts, profile_id = profile_id, country_var = countryss, day_var = dayss, year_var = yearss, month_var = monthss, current_user = current_user, friends = friends, team_img = team_imagee, team_name = name1, profile_image = key, username = self.user.name, email = self.user.email, firstname = self.user.first_name, last_name = self.user.last_name, country = self.user.country)
#            if self.request.get('edit'):
#                the_post = self.request.get('edit')
#                q = Profile_Comments.get_by_id(int(the_post), parent=None)
#                db.delete(q)
#                self.redirect('/profile/%s' %profile_id)
            elif not post_check:
                error = "You cannot submit empty posts."
                self.render('profile.html', team_name2 = name2, error = error, imgs = imgs, team_img2 = team_imagee2, profile_image_posted = key2, posts = posts, profile_id = profile_id, country_var = countryss, day_var = dayss, year_var = yearss, month_var = monthss, current_user = current_user, friends = friends, team_img = team_imagee, team_name = name1, profile_image = key, username = self.user.name, email = self.user.email, firstname = self.user.first_name, last_name = self.user.last_name, country = self.user.country)
            elif self.request.get("profile_submit_comment") != '':
                profile_comments = Profile_Comments (name_of_submitted = self.user.name, name_of_profile = profile_id)
                commentupl = self.request.get("profile_submit_comment")
                profile_comments.post = (commentupl)
                profile_comments.put()
                self.redirect('/profile/%s' %profile_id)
4

1 に答える 1

2

「無限スクロール」が使用される主な理由の1つは、ページが読み込まれるときに最初に送信する必要のあるデータの量を減らすためです。私は間違っているかもしれませんが、すべてのユーザーの投稿をロードする単一のGqlqueryがあるようです。これは、無限スクロールの概念ではあまり意味がありません。ページが読み込まれたときにすべての投稿が照会された場合、最初にすべての投稿を表示しないことによるメリットは、あるとしても最小限に抑えられます。

とにかく、これにはInfiniteScrollなどのjQueryプラグインの使用を検討します。これが基本的な考え方です。

最初にページをロードし、GqlQueryから返されたものをすべて印刷します。

<html>
  <div id="posts">
    <div>post 1</div>
    <div>post 2</div>
    <div>post 3</div>
  </div>
</html>

次に、javascriptを使用して<div id="posts">要素を選択します。

次に、別の投稿のセット(2ページ)をオフDOMにロードします<div>

最後に、誰かがページの下部に到達<div id="posts">したら、選択した要素を次の投稿のセットで追加します(要素の最後の投稿の下に挿入します<div id="posts">)。

于 2012-09-08T23:37:38.670 に答える