Kolben-WTForms Fehler für IntegerField statt zu scheitern validation
Wenn ich ein Formular erstellen, mit wtf_forms und Kolben-WTF, und verwenden Sie die IntegerField input, ich kann es nicht verwenden in Kombination mit der Länge validator
Wenn ich entfernen Sie die Längenbeschränkung dann funktioniert es einwandfrei. Sicherlich sollte ich in der Lage sein zu gelten, die eine Länge von Validierung zu einem IntegerField?
Python-Code.
from flask_wtf import Form
from wtforms import TextField, PasswordField, IntegerField, validators
class RegistrationForm(Form):
firstname = TextField('First Name', [validators.Required()])
lastname = TextField('Last Name', [validators.Required()])
telephone = IntegerField('Telephone', [validators.Length(min=10, max=10, message="Telephone should be 10 digits (no spaces)")])
TypeError
TypeError: object of type 'int' has no len()
Traceback (most recent call last)
File "C:\Python27\lib\site-packages\flask\app.py", line 1701, in __call__
return self.wsgi_app(environ, start_response)
File "C:\Python27\lib\site-packages\flask\app.py", line 1689, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "C:\Python27\lib\site-packages\flask\app.py", line 1687, in wsgi_app
response = self.full_dispatch_request()
File "C:\Python27\lib\site-packages\flask\app.py", line 1360, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Python27\lib\site-packages\flask\app.py", line 1358, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Python27\lib\site-packages\flask\app.py", line 1344, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "C:\index.py", line 45, in submit
if form.validate_on_submit():
File "C:\Python27\lib\site-packages\flask_wtf\form.py", line 156, in validate_on_submit
return self.is_submitted() and self.validate()
File "C:\Python27\lib\site-packages\wtforms\form.py", line 271, in validate
return super(Form, self).validate(extra)
File "C:\Python27\lib\site-packages\wtforms\form.py", line 130, in validate
if not field.validate(self, extra):
File "C:\Python27\lib\site-packages\wtforms\fields\core.py", line 175, in validate
stop_validation = self._run_validation_chain(form, chain)
File "C:\Python27\lib\site-packages\wtforms\fields\core.py", line 195, in _run_validation_chain
validator(form, self)
File "C:\Python27\lib\site-packages\wtforms\validators.py", line 91, in __call__
l = field.data and len(field.data) or 0
TypeError: object of type 'long' has no len()
- Geben Sie den code sagen : Telefon = IntegerField('Telefon', [validators.Länge(min=10, max=10, message="Telefon sollte 10-stellig (ohne Leerzeichen)")]), die Sie ersetzen müssen IntegerField dieser StringField: Telefon = StringField('Telefon', [validators.Länge(min=10, max=10, message="Telefon sollte 10-stellig (ohne Leerzeichen)")])
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den folgenden Fehler bedeutet, dass Sie versuchen, überprüfen Sie die Länge einer ganzen Zahl, die nicht erlaubt ist, die von python. Wenn Sie möchten, überprüfen die Länge, dann es muss ein string sein. IntegerField() aber per definition ist eine ganze Zahl
Müssen Sie erstellen Sie so etwas wie unten. NumberRange nimmt eine Reihe von zahlen.
Alternativ schlage ich vor, Sie verwenden ein FormField und definieren Sie Ihre eigene Telefon-Feld. Es gibt einen genauen Beispiel hier ein Telefon-Feld:
http://wtforms.simplecodes.com/docs/0.6.1/fields.html#wtforms.fields.FormField
Aus der http://wtforms.readthedocs.org/en/latest/validators.html#wtforms.validators.Length
"Überprüft die Länge einer Zeichenkette."
Auch ich glaube, es ist eine gute Idee, um zu speichern/validieren Telefon zahlen als ganze zahlen. Sie sollten wahrscheinlich verwenden Sie
wtforms.validators.Regexp
überprüfen Sie die Nummer.