さて、私は過去にこの質問をしました。しかし、聞いてみると、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)にマップします