Regex за деньги

AnonymousUserMixin не имеет атрибута имени пользователя. Вам нужно перезаписать объект и вызвать миксин. Взгляните на LoginManager.anonymous_user, который является объектом, который используется, когда ни один пользователь не вошел в систему.

Вы также должны получить пользователя откуда-то. Нет смысла хранить имя пользователя в g, так как вы можете просто использовать current_user.username.

Если вы хотите получить имя пользователя, вам тоже понадобится

if current_user.is_authenticated():
    g.user = current_user.username

Для этого потребуется, чтобы у объекта пользователя было свойство с именем username. Существует множество способов настроить использование Flask-Logins

. Я предлагаю перечитать документы и взглянуть на исходный код:

https://github.com/ maxcountryman / flask-login / blob / master / flask_login.py

Джо

15
задан abatishchev 26 September 2013 в 23:43
поделиться

3 ответа

\d+(,\d{1,2})?

позволит использовать запятую только в том случае, если у вас есть десятичные цифры, и не допускать запятой вообще. Знак вопроса означает то же самое, что и {0,1} , поэтому после \ d + у вас либо ноль экземпляров (т.е. ничего), либо один экземпляр

,\d{1,2}

Как указывает Хелен правильно, будет достаточно использовать группу без захвата, как в

\d+(?:,\d{1,2})?

Дополнительный ?: означает, что круглые скобки предназначены только для группировки , \ d {1,2} , чтобы использовать вопросительный знак, но нет необходимости помнить, что было найдено в этих скобках. Поскольку это означает меньше работы для модуля регулярных выражений, вы получаете прирост производительности.

29
ответ дан 1 December 2019 в 00:50
поделиться
3
ответ дан 1 December 2019 в 00:50
поделиться

Мы используем это очень либеральное регулярное выражение для проверки денег:

new Regex(@"^\-?\(?\$?\s*\-?\s*\(?(((\d{1,3}((\,\d{3})*|\d*))?(\.\d{1,4})?)|((\d{1,3}((\,\d{3})*|\d*))(\.\d{0,4})?))\)?$");

Оно позволяет все это: 0, 0, (0,0000), 0,1, 0,01, 0,0001, 0,1 доллара, 0,01 доллара, 0,0001 доллара, (0,1 доллара), (0,01 доллара), (. 0001), 0,1, 0,01 , 0,0001, 1., 1111., 1,111., 1, 1.00, 1,000.00, 1 доллар США, 1 доллар США, 1000 долларов США, 1,0000 долларов США, 1,0000 долларов США, 1,000,00 долларов США, -1, -1,00, -1000,00 долларов США, - 1 доллар США, - 1,00 доллара США, - , - 1 доллар, - 1,00 доллар, - 1000,00 долларов, -1, -1,00, -1000,00 долларов, (1), (1,00), (1000,00), (1), (1,00), (1000,00 долларов США), (1 доллар США), (1 доллар США), (1000 долларов США)

7
ответ дан 1 December 2019 в 00:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: