0

さて、私は過去にこの質問をしました。しかし、聞いてみると、PythonとAppEngineについての知識は限られていました。これが、私が過去にこれを実装できなかった理由である可能性が最も高いです。ユーザー名に基づいて各プロファイルを一意にしようとしています。

飛び込む前に、現時点で現在ログインしているユーザーのみを処理するプロファイルハンドラーを起動します。

class Profile(MainHandler):
    def get(self):
        if self.user:
            current_user = str(self.user.name)
            key = ''
            imgs  = db.GqlQuery("select * from Profile_Images WHERE name =:1", current_user)
            team_name  = db.GqlQuery("select * from Teams WHERE name =:1", current_user)
            team_images  = db.GqlQuery("select * from Teamimg WHERE user =:1", current_user)
        for clan in team_name:
                name1 = clan.team_name_anycase
        for image in team_images:
            team_imagee = image.key()
        if self.user:
            for img in imgs:
                key = img.key()
            self.render('profile.html', 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')

このハンドラーは、('profile'、Profile)を介してマップされます。

これまで私が理解していることは、ユーザー名をURLを介してプロファイルハンドラーに渡す必要があるということです。プロファイルハンドラーは、そのユーザー名をデータベースからデータを取得するための識別子として使用します。

私がstackoverflowに投稿されたのを見たのはでした('profile/<profile_id>', Profile)。そして、私はそれを少しいじっていますが、末尾のユーザー名(ex.localhost:8080 / profile / admin)で404エラーが発生しているようです。マッピングが失敗しているか、変数(つまりユーザー名)がプロファイルハンドラーとの対話に失敗していると思います。

誰かがここで私を助けてくれませんか?私はそれを持っていると確信していました、そしてそれは失敗しました。

YAMLファイル:

application: suitegamer
version: 1
runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /static
  static_dir: static

- url: /img
  static_dir: img

- url: /.*
  script: main.app

libraries:
- name: jinja2
  version: latest

- name: PIL
  version: "1.1.7"

MainHandler:

class MainPage(MainHandler):
    def get(self):
    if self.user:
            self.render('index.html', username = self.user.name, firstname = self.user.first_name)
        else:
            self.render('index.html')

    def post(self):
    username = self.request.get('username').lower()
        password = self.request.get('password')

        u = User.login(username, password)
        if u:
            self.login(u)
            self.redirect('/news_page')
        else:
            msg = 'Invalid login.'
            self.render('login.html', error = msg)

マッピング:

app = webapp2.WSGIApplication([('/', MainPage),
                               ('/logout', Logout),
                               ('/img', GetImage),
                               ('/register', Register),
                               ('/welcome', Welcome),
                               ('/news_page', News_Page),
                               ('/profile', Profile),
                               ('/edit_profile', Edit_Profile),
                               ('/change_profile_image', Change_Profile_Image),
                               ('/found_a_team', Found_Team),
                               ('/team_main', Team_Main),
                               ('/edit_team_main', Edit_Team_Main),
                               ('/edit_team_image', Edit_Team_Image)],
                              debug=True)

プロファイルハンドラーのテスト:

class Profile(MainHandler):
    def get(self, profile_id):
        profile_id = 'admin'
        if self.user:
            key = ''
            imgs  = db.GqlQuery("select * from Profile_Images WHERE name =:1", profile_id)
            team_name  = db.GqlQuery("select * from Teams WHERE name =:1", profile_id)
            team_images  = db.GqlQuery("select * from Teamimg WHERE user =:1", profile_id)
        for clan in team_name:
                name1 = clan.team_name_anycase
        for image in team_images:
            team_imagee = image.key()
        if self.user:
            for img in imgs:
                key = img.key()
            self.render('profile.html', 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')

画像ハンドラー:

class GetImage(MainHandler):
    def get(self):
        img = db.get(self.request.get("entity_id"))
        self.response.out.write(img.image)

('/ img'、GetImage)にマップします

4

1 に答える 1

1

マッピングは次のようになります。

('/profile/(.*)/?', Profile)

Handlers get関数は、プロファイルID/nameになるパラメーターを受け取る必要があります

class Profile(MainHandler):
    def get(self, profile_id):
        # do something with the profile id...

私はあなたがドキュメントをより深く見るべきだと思います。
たとえば、ここにあります:https ://developers.google.com/appengine/docs/python/tools/webapp/running

于 2012-08-15T18:20:17.990 に答える