title: Optional but not empty field in WTForms
body: <p>The Optional validator allows for both empty values and if the value is not present (from the <a href="http://wtforms.readthedocs.io/en/latest/validators.html#wtforms.validators.Optional" rel="nofollow noreferrer">docs</a>):</p>
  
  <blockquote>
    <p>class wtforms.validators.Optional(strip_whitespace=True)</p>
    
    <p>Allows empty input and stops the validation chain from continuing.</p>
    
    <p>If input is empty, also removes prior errors (such as processing
    errors) from the field.</p>
  </blockquote>
  
  <p>I have some additional validators on a field, and I would like if those validators ran even if the input is an empty string. The builtin <code>Optional</code> validator makes the rest of the validators skipped if the input was an empty string. Is there a built in or any other way to achieve this?</p>
  
  <h3>Edit: More specifics about my usecase</h3>
  
  <p>I am using this form to validate <code>PUT</code> requests. Let's say I have User entities with <code>username</code>s as ID and <code>middlename</code>s as an optional field. Then the validator for the fields would look something like:</p>
  
  <pre><code>class UserUpdateForm(Form):
      username = fields.StringField('username', [
          validators.Optional(),
          validators.Length(min=5, max=500)
      ])
      middlename = fields.StringField('middlename', [
          validators.Optional()
      ])
  </code></pre>
  
  <p>So I would allow for <code>PUT</code> requests that does not have a <code>username</code> or <code>middlename</code> parameter, and those would leave the fields untouched. However, when the parameter is present and is an empty string, I would like the <code>username</code> field validation fail because of the <code>Length</code> validator, but I would allow the <code>middlename</code> field to be set to the empty string.</p>
  
  <p>From another perspective: I would like to distinguish non-present parameters and empty string parameters.</p>