Хардкодить константы — не очень изящное решение. На мой взгляд, куда интереснее брать их из переменных окружения. Всё равно же через systemd запускаете.
По psycopg2 Вы не очень внимательно документацию почитали. В частности, вот тут (таких мест несколько, взял первое попавшееся):
sql_string_find_username="""SELECT extern_uid FROM identities WHERE user_id = (SELECT user_id FROM keys WHERE id = %s);""" %user_key
и да, зачем устанавливать соединение в обработчике строки? Мне кажется, что лучше создать одно соединение (или пул, не принципиально) при старте скрипта.
К слову, и сам объект подключения psycopg2, и его курсор можно использовать как менеджер контекста. Код получается чище, плюс не надо париться о закрытии.
Запись в лог — вообще что-то странное :) комментировать не берусь.
А если субъективно, то такие штуки круче на баше писать. Получается куда выразительнее :)
И не надо пользователей призывать. Нехай вводят так, как им удобно. А нормализовывать — это наше дело, программерское.
Кроме того, вроде бы существуют инпуты соответствующего типа, специально для телефонов.
По ссылке много букв сплошные хочуны на тему «было бы здорово», которые в принципе не решить без человеческого вмешательства. Ну, разве что реализовывать детекторы лиц.
А с простыми задачами — кропнуть, вписать целиком, вписать по ширине, вписать по высоте, отбить поля — с этим любые решения справляются, солр в том числе.
Машинерия — это, грубо говоря, набор механизмов. В нашем случае — это набор классов джанги, ответственных за работу с формами (от генерации хтмл до собственно валидации)
Для меня, как и, надеюсь, для большинства джанго-разработчиков, форма — это то, с чем работаем мы на сервер-сайде. То есть часть джанги. А не какой-то там html-код, за который должны отвечать верстальщики :-)
Но на клиентскую валидацию действительно полагаться нельзя, поэтому она (валидация) должна происходить на сервере. А JS, который всего лишь упрощает жизнь пользователю, должен всего лишь гонять от клиента серверу введённые данные и обратно, от сервера клиенту, решение сервера о том, верно ли всё заполнено.
Но как бы то ни было, задача валидации лежит целиком на машинерии формы.
P.S. На самом деле, в моделях тоже есть валидация, но это другой вопрос.
Что ж, у Вас есть право на личное мнение :-) Но оно не совпадает со мнением разработчиков джанги, которые считают, что
Check submitted data against a set of validation rules.
Convert submitted form data to the relevant Python data types.
вполне себе задачи форм (в самом начале, пп 2 и 4).
Я тоже считаю, что форма должна валидировать данные. Кстати, это не обязательно могут быть данные, пришедшие с HTTP, а что угодно, хотя бы пользовательский ввод:
data = {
'name': raw_input("Enter your name: "),
'age': raw_input("Enter your age: ")
}
form = Form(data)
if not form.is_valid():
print "Something goes wrong"
и кстати, разве форма не является частью сервера приложений?
Немного критики (возможно даже конструктивной).
По
psycopg2
Вы не очень внимательно документацию почитали. В частности, вот тут (таких мест несколько, взял первое попавшееся):Вы наступаете на те самое грабли, про который документация не говорит, а кричит: Never, never, NEVER use Python string concatenation (+) or string parameters interpolation (%) to pass variables to a SQL query string. Not even at gunpoint.
Опять же, про psycopg2: задавать соединение можно очень красиво:
и да, зачем устанавливать соединение в обработчике строки? Мне кажется, что лучше создать одно соединение (или пул, не принципиально) при старте скрипта.
К слову, и сам объект подключения
psycopg2
, и его курсор можно использовать как менеджер контекста. Код получается чище, плюс не надо париться о закрытии.А если субъективно, то такие штуки круче на баше писать. Получается куда выразительнее :)
Кроме того, вроде бы существуют инпуты соответствующего типа, специально для телефонов.
ссылке много буквсплошные хочуны на тему «было бы здорово», которые в принципе не решить без человеческого вмешательства. Ну, разве что реализовывать детекторы лиц.А с простыми задачами — кропнуть, вписать целиком, вписать по ширине, вписать по высоте, отбить поля — с этим любые решения справляются, солр в том числе.
(старый комментарий стёр, т.к. ошибся веткой, извините)
Для меня, как и, надеюсь, для большинства джанго-разработчиков, форма — это то, с чем работаем мы на сервер-сайде. То есть часть джанги. А не какой-то там html-код, за который должны отвечать верстальщики :-)
Но на клиентскую валидацию действительно полагаться нельзя, поэтому она (валидация) должна происходить на сервере. А JS, который всего лишь упрощает жизнь пользователю, должен всего лишь гонять от клиента серверу введённые данные и обратно, от сервера клиенту, решение сервера о том, верно ли всё заполнено.
Но как бы то ни было, задача валидации лежит целиком на машинерии формы.
P.S. На самом деле, в моделях тоже есть валидация, но это другой вопрос.
вполне себе задачи форм (в самом начале, пп 2 и 4).
Я тоже считаю, что форма должна валидировать данные. Кстати, это не обязательно могут быть данные, пришедшие с HTTP, а что угодно, хотя бы пользовательский ввод:
и кстати, разве форма не является частью сервера приложений?
и считаете, что это не размазывание логики и не нарушение DRY?