Web2Py getting/posting 值

Web2Py getting/posting values

我是 Web2Py 的新手,希望得到一些帮助。

我有一个评论数据库和一个游戏数据库。

目前,用户可以点击列表中的游戏,他们会被带到一个允许他们发表评论的页面。

我可以将评论保存到数据库中,但我无法获取它来引用相应的游戏。

数据库:

db.define_table('games',
            Field('title',requires=IS_NOT_EMPTY()),
            Field('description','text',requires=IS_NOT_EMPTY()))

db.define_table('reviews',
            Field('title',requires=IS_NOT_EMPTY()),
            Field('review','text',requires=IS_NOT_EMPTY()))

Default.py:

def review():
getTitle = db.games(request.args(0)) or redirect(URL('default', 'index'))
formReview = SQLFORM(db.reviews,fields = ['title','review']).process()
if formReview.accepted: redirect(URL('index'))
return dict(formReview=formReview, getTitle=getTitle)

Review.html:

{{extend 'layout.html'}}
<h2>Review a game</h2>
<h2>{{=getTitle.title}}</h2>
{{=formReview}}

我猜我需要在 'reviews' 中创建一个字段来获取 'request.args' 值。但我不确定?

你应该首先扩展你的 review table 以保持 foreign keygames table 像这样:

db.define_table('reviews',
            Field('title',requires=IS_NOT_EMPTY()),
            Field('review','text',requires=IS_NOT_EMPTY()),
            Field('game_id', 'reference games'))

所以你对评论的游戏有参考。有了这些附加信息,您应该能够 select 游戏的所有评论并将它们呈现在视图中。

for row in db(db.reviews.game_id == 1).select():
    print row.title   # just an example

当然你也需要在创建新的评论条目时保存相应的game_id ;)

formReview = SQLFORM(db.reviews,fields = ['game_id', 'title','review']).process()