Как реализовать обработку post параметра, если не знаешь его имени?

Мне необходимо написать обработчик, который принимает различные post параметры, у которых все время разные имена переменных.

то есть обработчик должен добавить в базу номер телефона, но он может придти как с POST['phone'], так и POST['telephone'] и т.д.
Из моих мыслей есть два способа. Это хранить для каждого поля которого ожидаешь, возможные имена переменных. То есть я ожидаю phone_number = ['telephone','phone'] для примера выше. И смотреть есть ли такая переменная в присланных POST данных, если нет, то включается второй способ, это поиск по шаблону (регулярке). Ищем по значениям присланных POST данных и таким образом вычесляем имя переменной.

Есть ли более деликатные, стройные способы реализации?
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Ну какой-то общий признак должен быть. Если это подстрока "phone" или там - "телефон" - то можно как-то так:
data1 = {'key': '1', 'phone': '2'}
data2 = {'key': '3', 'telephone': '4'}
data3 = {'key': '5', 'telePhone': '6'}
data4 = {'key': '7', 'PHONE': '8'}
data5 = {'key': '9', 'Телефон': '10'}

PATTERNS = ['phone', 'телефон']  # тут перечислить подстроки

getphone = lambda data:next(filter(lambda x: any([y in x.lower() for y in PATTERNS]), data.keys()))
print(data1[getphone(data1)])
print(data2[getphone(data2)])
print(data3[getphone(data3)])
print(data4[getphone(data4)])
print(data5[getphone(data5)])
# 2
# 4
# 6
# 8
# 10
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы