Python 博客应用程序引擎系统中的评论
最近,我阅读了《核心Python》一书中关于AppEngine的章节,并通过解释实现了博客示例。 我试图扩展这个示例,以允许在博客帖子中发表评论,但我面临一些困难 我有两种型号: BlogPost标记、文本、时间戳-它是存储标记、文本和创建日志的时间的表 评论blog_post,text-blog_post是BlogPost模型的一个引用属性,用于将评论与其相关的blog post一起分配 我的困难在于检索BlogPost键,以便使用用户输入的注释正确地分配它。我想我应该对帖子进行查询,获取它的键,并将它放在新创建的评论上,当然,如果它是由用户创建的。但在这一刻,我不清楚该如何编写这些步骤 换句话说,我需要做一些与这里提供的“一对多”解释相关的事情-。但是我需要按照我的实现来做,用html表单中的用户输入生成实例模型 下面,我让代码,我现在的工作,并感谢任何帮助Python 博客应用程序引擎系统中的评论,python,google-app-engine,Python,Google App Engine,最近,我阅读了《核心Python》一书中关于AppEngine的章节,并通过解释实现了博客示例。 我试图扩展这个示例,以允许在博客帖子中发表评论,但我面临一些困难 我有两种型号: BlogPost标记、文本、时间戳-它是存储标记、文本和创建日志的时间的表 评论blog_post,text-blog_post是BlogPost模型的一个引用属性,用于将评论与其相关的blog post一起分配 我的困难在于检索BlogPost键,以便使用用户输入的注释正确地分配它。我想我应该对帖子进行查询,获取它的
//app.yaml
application: src
version: 1
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /favicon\.ico
static_files: favicon.ico
upload: favicon\.ico
- url: .*
script: main.app
及
//main.py
import webapp2
from google.appengine.ext import db
class MainHandler(webapp2.RequestHandler):
def get(self):
self.response.out.write('''
<h1>The Blog Posts</h1>
<form action="/post" method=post>
Title:
<br><input type=text name=title>
<br>Body:
<br><textarea name=body rows=3 cols=60></textarea>
<br><input type=submit value="Post">
</form>
<hr>
''')
#posts = db.GqlQuery("SELECT * FROM BlogEntry")
posts = BlogPost.all().order('-timestamp').fetch(10)
for post in posts:
self.response.out.write('''<hr>
<strong>%s</strong><br>%s
<blockquote>%s</blockquote>''' % (
post.title, post.timestamp, post.body)
)
class BlogEntry(webapp2.RequestHandler):
def post(self):
post = BlogPost()
post.title = self.request.get('title')
post.body = self.request.get('body')
post.put()
self.redirect('/')
#model
class BlogPost(db.Model):
title = db.StringProperty()
body = db.TextProperty()
timestamp = db.DateTimeProperty(auto_now_add=True)
app = webapp2.WSGIApplication([
('/', MainHandler),
('/post', BlogEntry)
], debug=True)
一种设计是为每一篇博客文章提供一个评论表单。例如,您可以将BlogPost的键作为隐藏字段包含在表单中。为了减少登录页面上的混乱,您可能希望为每个博客文章提供一个单独的页面,允许用户在其中提交评论
这里有一个这种设计的例子:相关的代码片段是,附带的标记是 在NDB中,如果注释中有其他字段,则可以使用重复属性或重复结构化属性。重复属性的行为类似于Python列表,您可以在其中放置博客文章的所有注释。你只需要一次阅读