Я играю с wtforms в Flask и особенно заинтересован в понимании некоторых аспектов реализации класса StringField.Понимание реализации wtforms StringField
Так что я следующий пользовательский определенный класс:
from flask_wtf import Form
from wtforms import StringField, PasswordField
from wtforms.validators import DataRequired
class LoginForm(Form):
username = StringField('Username', validators=[DataRequired()])
password = PasswordField('Password', validators=[DataRequired()])
Теперь я создаю экземпляр класса, как это:
from flask import request
form = LoginForm(request.form)
Теперь, когда я делаю это:
form.username .data
Я в основном имею в виду данные член имя пользователя объект (который является объектом класса StringField). Правильно ?
Теперь я хотел бы понять, где это данные от?
Так что я пошел вперед к реализации StringFiled класс, который я нашел в следующем месте:
сайт-пакеты/wtforms/поля/core.py
core.py, являющийся довольно большим файлом, не может быть вставлен здесь
Теперь в core.py реализована реализация Стрингфилд класс был:
class StringField(Field):
"""
This field is the base for most of the more complicated fields, and
represents an ``<input type="text">``.
"""
widget = widgets.TextInput()
def process_formdata(self, valuelist):
if valuelist:
self.data = valuelist[0]
else:
self.data = ''
def _value(self):
return text_type(self.data) if self.data is not None else ''
Теперь в этом классе первое место, где появляется данные элемент (на самом деле установлен) находится в строке
self.data = valuelist[0]
внутри process_formdata(), где он привязывается к вызывающему объекту (в нашем случае объект имя пользователя), а затем он наконец возвращается в _value().
Однако process_formdata() сама по себе никогда не вызывается в любом месте во всем core.py файл на 1-е место, а именно, за исключением., Внутри метода класса Field (который наследуется Стрингфилд) процесс()
Но point is, метод () также сам по себе не получает вызова в любом месте всего ядра.
Так что вопрос:
Как именно это self.data набор, когда строка кода делает, что никогда не будет достигнуто на всех? Я уверен, что чего-то не хватает. Пожалуйста, помогите мне понять это лучше.