我正在尝试制作一个简单的webapp html页面,用于打印数据存储中给定的数据。然而,我一直在运行以下错误:
raise BadValueError('Property %s is required' % self.name)
BadValueError: Property category is required
我听说这是因为我必须事先初始化我的属性,但到目前为止,我还没有找到合适的方法。
以下内容放在模型.py 中
class Question(db.Model):
category = db.StringProperty(required=True)
question = db.StringProperty(required=True, multiline=True)
creator = db.StringProperty(required=True, multiline=True)
answer = db.StringProperty(required=True, multiline=True)
mustHave = db.StringProperty(required=False, multiline=True)
group = db.StringProperty(required=False)
以下内容在单独的页面上给出。by
class SpPage(webapp.RequestHandler):
def printPage(self,path):
user = users.get_current_user()
template_values = getCommonValues(user)
if user:
template_values['questions'] = model.Question.all().fetch(100)
self.response.out.write(template.render(path, template_values))
else:
path = os.path.join(os.path.dirname(__file__), 'html/pleaseLogin.html')
self.response.out.write(template.render(path, template_values))
我的html页面如下:
Questions<br/>
{% for eachQ in questions %}
<p>
<a href='/doQuestionPage?id={{eachQ.key}}'>{{eachQ.question}}</a><br/>
by {{eachQ.creator}}
</p>
{% endfor %}
要将数据添加到数据存储的类:注意:这是附在一个使用此类发布数据的表单上的。并不是所有的代码都在那里,所以如果一些变量(如"something")似乎没有被使用,也不用担心——它们确实被使用了。到目前为止,它似乎正在发挥作用。
class AddQuestion(webapp.RequestHandler):
def doPost(self,something):
user = users.get_current_user()
template_values = getCommonValues(user)
c = self.request.get('cat')
q = self.request.get('question')
a = self.request.get('answer')
m = self.request.get('musthaves')
if user:
emailStr = user.email().lower()
if q and a and m:
newQuestion = model.Question(category = c, question = q, creator = emailStr, answer = a, mustHave = m)
newQuestion.put()
template_values['message'] = 'New question created!'
当前数据存储中可能有一些实体没有填写类别属性或其他必需属性。当您在之前已经创建了一些其他实体之后将属性添加到模型中时,有时会发生这种情况。或者可能将required=True
选项添加到以前不需要的属性中。
如果您正在处理dev数据,我建议您要么清除数据存储,要么删除所有Question
实体,看看这是否有效。
否则,您将不得不手动将数据添加到所有必需的字段或删除required=True
选项。