У меня возникла очень странная проблема с wtf-формами, когда я отправляю запрос, используя $http-модуль angularjs. При инициализации WTForm я получаю ошибку Bad request: 400. В целях тестирования я отключил защиту csrf. Я серьезно понятия не имею, где искать проблему. Ниже приведен минимальный сбой:
Служба Angularjs отправляет запрос:
var data = new FormData();
data.append('surname', _gifter.surname);
data.append('lastname', _gifter.lastname);
data.append('email', _gifter.email);
data.append('email_confirm', _gifter.email_confirm);
data.append('prize', gift.prize);
$http.post('ajax/claim/' + DataProvider.gift.id + '/', data)
Маршрут фляги:
@app.route('/ajax/claim/<int:gift_id>/', methods = ['POST'])
def claim_gift(gift_id):
print("request:" + request.data)
claim_form = ClaimGiftForm(csrf_enabled=False)
return 'success'
WTFФорма:
class ClaimGiftForm(Form):
surname = TextField(
validators=[validators.Required()])
lastname = TextField(
validators=[validators.Required()])
email = EmailField(
validators = [
validators.email(),
validators.Required()])
email_confirm = EmailField(
validators = [
validators.Required(),
validators.EqualTo()])
prize = IntegerField()
Когда я печатаю запрос (см. «Flask route»), данные вроде в порядке - все передается правильно. Но при инициализации формы я получаю вышеупомянутую ошибку.
Edit1: я только что узнал, что по какой-то причине request.form
MultiDict пуст, хотя request.data
содержит ожидаемые данные. Однако я понятия не имею, почему это так.
Edit2: pprint(request.data)
дает:
-----------------------------109386632915471364402090498247\r\nContent-Disposition: form-data; name="surname"\r\n\r\ntheName\r\n
-----------------------------109386632915471364402090498247\r\nContent-Disposition: form-data; name="lastname"\r\n\r\ntheLastname\r\n
-----------------------------109386632915471364402090498247\r\nContent-Disposition: form-data; name="email"\r\n\r\[email protected]\r\n
-----------------------------109386632915471364402090498247\r\nContent-Disposition: form-data; name="email_confirm"\r\n\r\[email protected]\r\n
-----------------------------109386632915471364402090498247\r\nContent-Disposition: form-data; name="prize"\r\n\r\n12\r\n
-----------------------------109386632915471364402090498247--\r\n'