2013-11-10 9 views
2

В настоящее время я прохожу через курс веб-разработки от Udacity, и, когда я проходил один из своих исходных кодов для создания постоянной ссылки для каждой отдельной записи в блоге, я столкнулся с сомнения. Теперь вот код, где я застрял:Google App Engine: Постоянная ссылка

class PostPage(BlogHandler): 
    def get(self, post_id): 
     key = db.Key.from_path('Post', int(post_id), parent=blog_key())  #the created key is a key of an entity of kind 'Post' with id 'post_id' having a parent of kind defined by blog_key() 
     post = db.get(key) #the get() function basically retrieves the instance(in this case, post of the blog) 
          #that has the 'key' as its unique identifier. 
     if not post: 
      self.error(404) 
      return 

     self.render("permalink.html", post = post) 

Теперь профессор этого курса говорит, что post_id передается в с URL, как только пост, если она представлена. Вот этот обработчик для этого же:

('/blog/([0-9]+)', PostPage) 

Итак, как создается post_id, когда пользователь отправляет сообщение? И на каком основании генерируются эти идентификаторы? Они случайны? Кроме того, как передается post_id в функции post() обработчика PostPage?

ответ

2

Пара сообщений на форумах, которые могут оказаться полезными -

  1. http://forums.udacity.com/questions/6012751/permalinks/6013385
  2. http://forums.udacity.com/questions/6014750/a-couple-helpful-links-for-hw-3#cs253
  3. http://forums.udacity.com/questions/6014750/a-couple-helpful-links-for-hw-3/6015526

post_id является фактической базы данных (БД) Идентификатор пост , Таким образом, вам просто нужно сделать get_by_id() в сообщениях db для запрашиваемого идентификатора конкретной страницы.

Да, идентификаторы автоматически генерируются обработчиком базы данных при добавлении к нему сообщения. Иды генерируются наугад, чтобы избежать кластеризации. (Corrected by Daniel))

Для переменной, передаваемой обработчику (blog_id), проверьте ответ в 3-й ссылке.

Подробнее см. В сообщениях в приведенных выше ссылках. Кроме того, форумы - очень хорошее место для видеовстречи. Если вы застряли, есть большой шанс, что другие были в такой же ситуации & они спрашивали на форумах!

Пребывание Udacious!

+3

Вы были прямо до того момента, когда вы сказали, что идентификаторы хранилища являются последовательными. Это не верно в GAE на некоторое время: теперь они распределены более или менее случайным образом, чтобы избежать неэффективности из-за кластеризации. –

+1

Ссылки действительно помогли. Спасибо @Ashish! –

+2

Привет, ребята, я больше не могу получить доступ к общим ссылкам. Все они перенаправляются на https://discussions.udacity.com/, если возможно, делитесь обновленными постоянными ссылками. – Deep