我有html表单,有可能:
(1)用户输入没有,例如,在文本输入字段的情况下;
<input type="text" class="input-xlarge" id="first-name" name="first-name">
(2)用户保留默认空值,例如select:
<select id="prof-area" class="input-xlarge">
<option value="0" selected="selected"></option>
(3)用户留空值,就像选择多个选项一样:
<select multiple="multiple" id="reason" name="reason" class="input-xlarge">
<option value="001">reason001</option>
<option value="002">reason002</option>
在GAE方面的每种情况下,我都应该明白这是空值。
first_name = None
if self.request.get('first-name'):
first_name = self.request.get('first-name')
适用于案例(1)。
prof_area = None
if self.request.get('prof-area') and self.request.get('prof-area') !='0':
prof_area = self.request.get('prof-area')
应该适用于案例(2),但看起来不太好。有没有更好的方法来处理相同的事情?
答案 0 :(得分:0)
除非您添加了required=True
参数,否则不需要所有这些工作。如果您将实体遗漏了某些属性,则GAE会创建或更新该属性,并将该属性遗漏为空。见docs
答案 1 :(得分:0)
您的prof-area字段没有name参数,这也是您在服务器上看不到数据的原因。
无论如何,试试这个......
在客户端,只需在空选择选项中添加一个空字符串,如下所示:
<select id="prof-area" name="prof-area" class="input-xlarge">
<option value="" selected="selected"> -- select -- </option>
</select
然后在服务器上,首先将所有值都集中到局部变量中 - 让其他人更容易看到发生了什么......
first_name = self.request.get('first_name')
prof_area = self.request.get('prof-area')
reason = self.request.get('reason')
然后你可以依次检查每个参数......
if first_name:
# do something with first_name
if prof_area:
# do something with prof_area
if reason:
# do something with reason