如何正确处理空的,错过的,默认的表单值?

时间:2012-06-29 18:35:35

标签: javascript forms google-app-engine

我有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),但看起来不太好。有没有更好的方法来处理相同的事情?

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