2012-07-21 59 views
0

我創建了一個相當有趣的應用程序。我有一個配置文件頁面系統實施。現在,當談到編程和應用程序引擎時,我是一個相當大的'noob',所以請在這裏溫和,(請)。所以我知道你可以將參數傳遞給URL示例/ profile /。我只是不完全確定如何將其實現到我的代碼或它背後的思考過程中。爲用戶創建獨特的配置文件頁面

這將是我的數據庫:

class User(db.Model): 
    name = db.StringProperty(required = True) 
    pw_hash = db.StringProperty(required = True) 
    email = db.StringProperty(required = True) 

這是我的個人資料的處理程序:

class Profile(MainHandler): 
    def get(self): 
     if self.user: 
      current_user = str(self.user.name) 
      key='ag5kZXZ-c3VpdGVnYW1lcnINCxIHSW1hZ2VkYhglDA ' 
      imgs = db.GqlQuery("select * from Imagedb WHERE name =:1", current_user) 
      for img in imgs: 
       key = img.key() # this is the key 
      self.render('profile.html', profile_image = key ,username = self.user.name, email = self.user.email, first_name = self.user.first_name, last_name = self.user.last_name, country = self.user.country, prov_state = self.user.prov_state, city_town = self.user.city_town) 
     else: 
      self.redirect('/register') 

輪廓有此刻的實施以及顯示畫面系統。我的目標是基本上建立你稱之爲社交網絡的東西。 AKA,每個配置文件的博客,以及一個消息系統,以及其他一些系統。

我感謝任何和所有的幫助。即使他們只是你的想法/意見。我有我的網站可以加載到一個域,所以它可能會告訴你,但我真的想保持它的包裝直到它完成:P。

非常感謝。

編輯:

這是我看到張貼的解決方案,但是我不知道如何去實現它。

class User(ndb.Model): 
    unique_identifier = ndb.StringProperty() 
    ... 

class ProfilePage(webapp2.RequestHandler): 
    def get(self, profile_id): 
    #profile_id = key name of user 
    user = User.get_by_id(profile_id) 
    #profile_id = some unique field 
    #user = User.query(User.unique_identifier == profile_id).get() 
    if user: 
     #Get all posts for that user and render.... 


app = webapp2.WSGIApplication([('/', MainPage), 
           ('/profile/<profile_id>', ProfilePage),]) 
+0

我發現你當前的一組標籤,而不是一般的和不具說明性的。在他們看來,我無法閱讀你正在使用什麼編程語言,什麼框架,或者你正在談論一個基於Web的應用程序的事實。更好的標籤可能吸引更好的答案 – MvG 2012-07-21 18:47:15

+0

感謝您的提示。我已經相應地更新了它們。 – suitegamer 2012-07-21 18:49:36

回答

1

您正在尋找URL的profile_id部分,並且希望將該ID傳遞給您的請求處理程序。這一變化讓你的應用程序定義定義映射「路線」和RequestHandler對象之間:

app = webapp2.WSGIApplication([('/', MainPage), 
           ('/profile/<profile_id>', ProfilePage),]) 

通常這些映射是一個URL或URL的正則表達式與一些語法/會議,以確定變量。

在這種情況下,'/profile/<profile_id>'route template,它使用名稱profile_id來匹配第二個路徑段中傳遞的任何內容。

任何匹配都作爲位置參數傳遞給RequestHandler函數。這是由框架處理的,你只需要爲你的路由中的每個<name[:regex]>塊添加參數。

發佈的解決方案建議爲用戶模型添加unique_identifier字段的原因是存儲規範的user_id/profile_id。假設您只是使用整數來表示唯一的用戶身份。

您的路線模板可以更改爲只匹配整數,例如'/profile/<user_id:\d+>/',用戶的網址可能類似於/profile/1024/

+0

謝謝。我會看看我能做什麼。 – suitegamer 2012-07-21 19:30:14

+0

好吧,我已經將我的模板中的所有配置文件按鈕鏈接到正確的頁面,即(localhost:8080/profile/admin)。我將current_user(我的標識符通過用戶的名稱)傳遞到映射到('/ profile/',Profile)的配置文件請求處理程序'get(self,current_user)'中。 User_re是我創建用戶的reg表達式。我收到了404錯誤。我的貼圖正在進行...... – suitegamer 2012-07-21 19:54:14

+1

您應該在您的問題中包含您當前的「app =」行,以便人們可以看到您使用的確切路線。 – stderr 2012-07-21 20:02:31