以下是我的模型和观点。我是App Engine的新手,我正在尝试创建一个与profiletitle有关系的新语言集。我已经阅读了大量的帖子/文档,但找不到功能视图代码的好例子。
models.py
class AddProfile(db.Model):
profiletitle = db.StringProperty(required=True)
class AddLang(db.Model):
profile = db.ReferenceProperty(AddProfile, required=True)
language = db.StringListProperty()
date = db.DateTimeProperty(auto_now_add=True)
views.py
class CreateLang(BaseHandler):
def post(self):
n = AddLang(
profile = self.request.get('profile'),
language = self.request.get('language').split(', '))
n.put()
return webapp2.redirect('/')
def get(self):
self.render_template('create.html', {})
更新了view.py - 现在将数据存储在数据存储
中class CreateLang(BaseHandler):
def post(self):
n = AddLang(
profile = AddProfile.all().filter('profiletitle', self.request.get('profile')).get(),
language = self.request.get('language').split(', '))
n.put()
return webapp2.redirect('/')
def get(self):
self.render_template('create.html', {})
create.html上
<!DOCTYPE html>
<html>
<body>
<form action="" method="post">
<div class="field-wrapper">
<div class="field-label">
<label for="id_profile">Profile</label>:
</div>
<div class="field-field">
<input type="text" name="profile" id="id_profile" />
</div>
</div>
<div class="field-wrapper">
<div class="field-label">
<label for="id_language">Language</label>:
</div>
<div class="field-field">
<input type="text" name="language" id="id_language" />
</div>
</div>
<br>
<input type="submit" value=submit />
</form>
当我尝试发布/保存数据时,收到以下错误。我相信这是因为我需要使用get来调用我模板中选择的profiletitle的特定id。
注意:我没有使用表单py,我有一个简单的html模板。如果您有任何问题或需要查看模板,请与我们联系。感谢阅读/帮助。
![datastore snip]:(http://imm.io/1hTVN)
Error Message
if value is not None and not value.has_key():
AttributeError: 'unicode' object has no attribute 'has_key'
答案 0 :(得分:1)
准确显示您在POST中发送的内容会很有帮助。但假设您要发送个人资料标题,则需要获取它:
profile = AddProfile.all().filter('profiletitle', self.request.get('profile')).get()
现在您可以使用该配置文件对象来创建AddLang:
lang = AddLang(profile=profile, language=language)
lang.put()