最明显的就是使用session。
将上传文件的名称保存在某个会话变量中。
使用 auth.verify_email(onaccept=...)
验证用户的电子邮件后,您的代码将被调用 - 然后您可以关联文件和用户:来自 session.variable 和 auth.user_id 的文件名
同时设置任何权限
如果您希望用户有时间考虑并确认来自另一个比赛和另一个会话的注册,那么请在文件表中包含一个 user.email 字段:
db.define_table('gifts',
Field('im', 'upload', requires=IS_EMPTY_OR(IS_IMAGE(maxsize=(200, 200))), autodelete=True, uploadfolder='static/gifts'),
Field('email', requires=IS_EMAIL()),
Field('notes','text', default='', writable=True),
Field('t0','datetime',default=request.now, readable=False, writable=False),
Field('t', 'datetime', default=request.now, update=request.now, writable=False),
Field('rating', 'integer', default=0, writable=False, readable=False),
Field('hidden', 'boolean', default=True, writable=False, readable=True),
)
然后在 onaccept 的回调函数中包含匹配查询:
db(db.gifts.email==auth.user.email).update(hidden=False)
在给用户适当的反馈之前最好选择任何隐藏的文件(可能他已经上传了几个文件直到确认时刻)
祝你好运