
sairusvirus
27.03.2017
14:42:07
Как преобразовать строку в список по два элемента

Dk
27.03.2017
14:43:07

Johnnie
27.03.2017
14:47:30
как лучше во фласке при сабмите формы проверить, что одно поле заканчивается на определенную последовательность символов, если нет - выдавать ошибку. во вьюшке или в самое форме через валидатор с регэкспом?

Dmitriy
27.03.2017
14:48:20
Какой-нибудь clean_field метод

Google

Igor
27.03.2017
14:48:29
если нет - выдавать ошибку через raise, должен быть какой-то validation error в wtforms
в форме, в общем

Johnnie
27.03.2017
14:48:45
т.е. переопределять validate() у формы?

Igor
27.03.2017
14:48:57
+

Dmitriy
27.03.2017
14:49:03
Стоп

Igor
27.03.2017
14:49:06
не переопределять только, а скорее экстендить
super не забывай
а вообще да, стоп

Johnnie
27.03.2017
14:49:11
мне надо регить только тех, у кого ящик в определенном домене)

Dmitriy
27.03.2017
14:49:23
В wtforms же можно указать валидатор

Johnnie
27.03.2017
14:49:35
def my_length_check(form, field):
if len(field.data) > 50:
raise ValidationError('Field must be less than 50 characters')

Igor
27.03.2017
14:49:37
там же валидаторы есть прям в поле, да

Johnnie
27.03.2017
14:49:39
во, кажись нашел

Google

Igor
27.03.2017
14:49:44
class LoginForm(FlaskForm):
username = StringField('Username', validators=[Required()])
password = PasswordField('Password', validators=[Required()])
remember_me = BooleanField('Remember me', default=True)

Johnnie
27.03.2017
14:49:47
свои хуярить, без переопределения
http://wtforms.readthedocs.io/en/latest/validators.html#custom-validators

Igor
27.03.2017
14:50:01
в validators добавляешь регексповый свой да

Johnnie
27.03.2017
14:50:12
да там регэксп лишнее даж

Igor
27.03.2017
14:50:40
ну зато регексп готовый уже
а ends with не вижу
class wtforms.validators.Regexp(regex, flags=0, message=None)
и регэкспы в питончике шустрые на малых строках

Dmitriy
27.03.2017
14:51:24
Кастом же

Johnnie
27.03.2017
14:56:58
def validate_email(form, field):
allowed_email_domains = ('@mail.ru',)
message = f"Email address domain must be one of {', '.join(allowed_email_domains)}"
if not any((field.endswith(domain) for domain in allowed_email_domains)):
raise ValidationError(message)

Igor
27.03.2017
14:57:08
In [16]: %timeit 'lolkek hello world keklol'.endswith('lol')
The slowest run took 6.90 times longer than the fastest. This could mean that an intermediate result is being cached.
1000000 loops, best of 3: 202 ns per loop
In [17]: %timeit bool(re.match(r'.*lol$', 'lolkek hello world keklol'))
The slowest run took 5.84 times longer than the fastest. This could mean that an intermediate result is being cached.
1000000 loops, best of 3: 1.25 µs per loop
я путаюсь немного, но по-моему регэкспы быстрее, не?

Johnnie
27.03.2017
14:58:11
нуууу, дааа... но стоит ли?))

Igor
27.03.2017
14:58:11
да, путаюсь
1.25 µs = 1250 nanosecond, говорит мне гугл

Johnnie
27.03.2017
14:59:10
микро мк 10−6
нано н 10−9
тогда збс

Denis
27.03.2017
15:07:09
ребят, привет
Нужна помощь в задаче, поиск самого большего 3хзначного палиндрома

Google

Denis
27.03.2017
15:07:34
код такой
res = reduce(lambda mem, next: mem*next,range(1000),100)
return res == res[::-1]
ошибка такая return res == res[::-1]
TypeError: 'int' object is not subscriptable

Igor
27.03.2017
15:12:42
у тебя вместо ошибки снова код скопипастился

Denis
27.03.2017
15:14:42
сорян

Johnnie
27.03.2017
15:15:15
нельзя инт резать

Denis
27.03.2017
15:15:54
а как можно проверить тогда число?

Johnnie
27.03.2017
15:16:43
проверить на что?

Denis
27.03.2017
15:18:27
является ли палиндромом

Igor
27.03.2017
15:18:31
стоп

Denis
27.03.2017
15:18:32
просто сделать срезами просто

Igor
27.03.2017
15:18:38
ты понимаешь как reduce работает?

Denis
27.03.2017
15:18:38
но нужно его преобразовывать
да

Igor
27.03.2017
15:18:42
чем он от map отличается?
ну а зачем тогда [::-1] к числу делать
ааа

Denis
27.03.2017
15:19:03
дурак есть дурак

Igor
27.03.2017
15:19:05
%)
ну [::-1] с какими типами объектов* можно делать?

Google

Denis
27.03.2017
15:19:28
строки

Igor
27.03.2017
15:19:30
тааак
как мы можем получить строку из числа?

Denis
27.03.2017
15:20:15
str(число)?

Igor
27.03.2017
15:20:56
попробуй!

b0g3r
27.03.2017
15:21:33

Igor
27.03.2017
15:22:03
игорь за уточку :)
за удочку. неправильно как-то за людей готовый код писать. тебя потом обвиняют, что над readlines() нельзя будет split() сделать.
Паша отлично вообще реагирует, дает удочку, а не рыбу, все такое

Admin
ERROR: S client not available

b0g3r
27.03.2017
15:22:17
пусть сами мучаются

Igor
27.03.2017
15:22:18
вот и он, кстати!

Denis
27.03.2017
15:22:25
попробуй!
на самом деле пробовал не работает =*(

Igor
27.03.2017
15:22:33
покажи
и обрати внимание, что 123 не равно "123"
а то мало ли.

Pavel
27.03.2017
15:22:56

Denis
27.03.2017
15:22:59
да

Igor
27.03.2017
15:23:26
надо дописать плагинчик к айпайтону
мне просто %timeit очень нравится
на SO пишут про timeit.repeat

Google

Denis
27.03.2017
15:23:55
покажи
return str(res) == str(res[::-1])

D
27.03.2017
15:24:13
уот

Igor
27.03.2017
15:24:14
:)
res это что такое? число или строка?

Denis
27.03.2017
15:24:22

b0g3r
27.03.2017
15:24:34
ну почти

Denis
27.03.2017
15:24:43
по идее все перемноженные объекты с помощь reduce
res = reduce(lambda mem, next: mem*next,range(1000),100)

Igor
27.03.2017
15:24:54
это понятно
тип данных в итоге какой?
у результата
число или строка?

Denis
27.03.2017
15:25:10
строка

Igor
27.03.2017
15:25:26
если строка, тогда зачем ты щас делал str(res)?
и почему у тебя выше писало про int object isn't ...
в общем, res - это все-таки число, так?
а [::-1] над чем можно делать?
над строками

Denis
27.03.2017
15:26:20
число да

Igor
27.03.2017
15:26:24
если res - это число, как сделать строку? str(res)

Denis
27.03.2017
15:26:26
но потом я его преборазовал

Igor
27.03.2017
15:26:32
нет
Эта группа больше не существует