
Zart
03.09.2016
13:09:35
это был третий питон. теперь второй:
>>> import re
>>> re.match('.*ya$', 'NYA'), re.match('.*ya$', 'NYA', re.I)
(None, <_sre.SRE_Match object at 0x02FF5020>)
>>> re.match('.*я$', 'БЛЯ'), re.match('.*я$', 'БЛЯ', re.I)
(None, None)
но берем юникодные строки:
>>> re.match(u'.*я$', u'БЛЯ'), re.match(u'.*я$', u'БЛЯ', re.I)
(None, None)
>>> re.match(u'.*я$', u'БЛЯ'), re.match(u'.*я$', u'БЛЯ', re.I+re.U)
(None, <_sre.SRE_Match object at 0x02FF5020>)

Google

Zart
03.09.2016
13:11:28
т.е. когда регэкспы и строки юникодны и во флагах стоит re.U(NICODE), начинает работать и для нелатиницы

b0g3r
03.09.2016
13:12:02
спасибо, зарт, выручаешь)

Alex
03.09.2016
14:54:50
Показывай settings и конфиги вебсервера.
MEDIA_ROOT = os.path.join(PROJECT_ROOT, '..', 'media')
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static/')
STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join('static'),)
ADMIN_MEDIA_PREFIX = '/static/admin/'
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
что может быть не так? только статику админки не коллектит, остальное есть

Zart
03.09.2016
15:25:42
STATICFILES_DIRS = (os.path.join('static'),)
лол
что мешало написать STATICFILES_DIRS=(STATIC_ROOT,)

Alex
03.09.2016
15:26:55
ничего)

Zart
03.09.2016
15:28:12
а так у тебя статик не абсолютный и берется от текущего каталога
это работает когда запускаешь вручную девсервер прямо из каталога проекта
но боевые веб-сервера обычно в квд имеют либо / либо хомяк... и поэтому ищут не там. что ты мог выяснить сразу, почитав лог ошибок вебсервера, и увидев там cant find /static/foo

Alex
03.09.2016
15:30:34
и что я должен поменять?

Zart
03.09.2016
15:30:59
хотя бы на статик_рут как выше. он там через абспатх сделан абсолютным

Alex
03.09.2016
15:32:06
STATIC_ROOT = os.path.join(PROJECT_ROOT, '..', ‘static’) так?

Google

Zart
03.09.2016
15:32:42
вот это решение по факту
что мешало написать STATICFILES_DIRS=(STATIC_ROOT,)

Alex
03.09.2016
15:33:16
аа понял
ругается: django.core.exceptions.ImproperlyConfigured: The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting
написал так: STATICFILES_DIRS = (os.path.join(PROJECT_ROOT, '..', 'static’),)
не помогло, без ошибок, но статики нет до сих пор

Zart
03.09.2016
15:39:43
а, блин
туплю 8\ это откуда статикфайлс собирает исходную статику выходит?
тогда ему надо от пакаджа танцевать

Alex
03.09.2016
15:43:00
a сорри, STATICFILES_DIRS = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static/‘) без ошибок, но безрезультатно((

Zart
03.09.2016
15:44:31
а на сервере прогонял сборку статики-то?

Alex
03.09.2016
15:46:56
да я на серваке делаю, на локалке и без сборки пашет

Zart
03.09.2016
15:47:25
на локалке поди DEBUG=True?

Alex
03.09.2016
15:52:53
да
если так с ошибкой STATICFILES_DIRS = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static/‘) генерирует в папку сеттингс
./manage.py findstatic admin
Found 'admin' here:
/home/alex/Projects/gkk/settings/static/admin
/home/alex/Env/gkk/lib/python2.7/site-packages/flat/static/admin
/home/alex/Env/gkk/lib/python2.7/site-packages/rosetta/static/admin
/home/alex/Env/gkk/lib/python2.7/site-packages/django/contrib/admin/static/admin
если делать правильно STATICFILES_DIRS = (os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'static/‘),), то ничего нет(( вообще не могу понять


Pavel
03.09.2016
16:23:38
_dirs - это пути, где статика ищет manage. Py collrctstatic. Найденные файлы копируются в _root, и на этот каталог натрпвливается nginx
короче, это так работает.
когда ты запрашиваешь урл (/static/1.txt), который уходит в static files, то он отрезает от него ту часть, которая в настройках указана как STATIC_URL. То, что останется, ищется вначале в путях, которые прописаны в STATICFILES_DIRS, потом оно перебирает все приложения, заходит там в папку static и ищет вот тот остаточек там.
не, я сейчас про разработку говорю. В случае продакшена там всё проще - ./manage.py collectstatic проходит по всем местам, которые я указал выше, собирает там вообще все файлы, и сваливает их в STATIC_ROOT.
nginx знает только про этот STATIC_ROOT и не лезет за статикой в недра жанго-приложений.

Google

Pavel
03.09.2016
16:24:37
этот фокус ( os.path.join(PROJECT_DIR, '../static'), ) мне не очень нравится, потому что сильно зависит от раскладки проекта и как определён этот самый PROJECT_DIR. Если просто скопировать строчку из чужого конфига и к себе вставить, то может не завестись, как оно и случилось.
Я долгое время сюда пихал абсолютный путь и был доволен.

Alex
03.09.2016
16:32:05
Ну получается я же пихаю абсолютный путь
Но все равно ноль эффекта

Pavel
03.09.2016
16:39:18
В ststicfiles_root файлы появляются?
Сделай конфиг просто с путями, без os.path.join и пачки dirname.

Dmitry
03.09.2016
16:42:20
Выглядит не очень, но работает

Pavel
03.09.2016
16:43:30

Dmitry
03.09.2016
16:44:31
Хм, супер :) значит и бескостыльный вариант есть :)
Спасибо :)

Alex
03.09.2016
16:49:41

Pavel
03.09.2016
16:50:51
Нет(
./manage.py collectstatic что говорит?

Alex
03.09.2016
16:51:29
Тихо собирает файлы проекта, но файлы админки нет

Pavel
03.09.2016
16:52:25
django.contrib.admin в installed_apps есть?

Alex
03.09.2016
16:52:46
Да
Или static dirs не должен быть одинаковым с статик рут?

Pavel
03.09.2016
16:53:54
я вот там три огромных сообщения написал, зачем нужна каждая из этих настроек. ?
_dirs
static_root - это место, куда собираются файлы из staticfiles_dirs и из /static/ всех приложений.
это разные места.

Google

⬗VLAD⌶K⬖
03.09.2016
16:57:02
myDict = {0:'zero',1:'one',2:'two',3:'three'}
myList=list()
for key, val in myDict.items():
myList.append(val,key)
print myList[1]
не запускается с интуит.ру задача, даже на 2.7
ват зе фак

Pavel
03.09.2016
17:00:45
STATIC_ROOT вообще может не быть, если файлы загружаются куда-нибудь в CDN.

Cykooz
03.09.2016
17:00:48
ват зе фак
Наверное ты хотел вот это
myList.append((val,key))
Хотя по моему проще сделать вот так
myList = myDict.items()

⬗VLAD⌶K⬖
03.09.2016
17:01:52

Admin
ERROR: S client not available

⬗VLAD⌶K⬖
03.09.2016
17:02:09

Zart
03.09.2016
17:16:15

Cykooz
03.09.2016
17:16:35
Ну там про 2.7 что то было написанно ?

Zart
03.09.2016
17:16:57
myList = list(myDict.items()) скорее

Питон
03.09.2016
17:23:38
Скорее нет
Скорее может быть
Скорее незнаю

Alex
03.09.2016
17:26:03

Питон
03.09.2016
17:29:26
Лоль
Как такии текстом писать?
Шрифтом

⬗VLAD⌶K⬖
03.09.2016
17:35:50
` рядом с буквой ё
три раза перед текстом, три после

Google

Stanislav
03.09.2016
19:31:49
Помогите построить регексп, пожалуйста.
Есть строка вида
Хуйнянепонятная*arg: Descr word word; arg2: rcseD drow drow*Кучаненужноготекста
Нужно вытащить все части типо arg: Descr. Этих аргументов может быть много, искать нужно только между звездочками. Разделяется описание и следующий аргумент знаком ";".
Пытался сделать что-то типо этого: \*(\w+):.*;\*. Ничего не вышло, не шарю как сделать

V
03.09.2016
20:30:08
(?<=(?:\*|;))\s*(.*?)(?=(?:;|\*)) даст "arg: Descr word word" и "arg2: rcseD drow drow" - годится?
либо (?<=(?:\*|;))\s*(.*?):\s*(.*?)(?=(?:;|\*)) будет давать в первой группе arg, а во второй - описание

Stanislav
03.09.2016
20:34:59
Во заебиись
Спасиботмастер Йода ?

V
03.09.2016
20:35:50
не настоящий Йода я но регекспов сила со мной иногда
а вот расскажите мне как взрослые дяди проверяют, что строка не None перед тем как ее насиловать? допустим, функция get_shit() возвращает иногда строку, а иногда None. если там строка, то я хочу ее, например, .strip(). но тупо get_shit().strip() нельзя, потому что если вернется None, то будет ексепшн. это надо shit = get_shit() и потом if shit: shit.strip() - так? или есть более изящный питоничный способ?

Stanislav
03.09.2016
20:45:39

Igor
03.09.2016
20:48:37

V
03.09.2016
20:48:43
ммм... что-то как-то не то

Igor
03.09.2016
20:49:15
правильно сравнивать с None будет так:
if a is None

Stanislav
03.09.2016
20:49:45

V
03.09.2016
20:50:04
по сути я заполняю словарь, и каждое поле в принципе может быть None, но если оно не None, то я хочу, чтобы лишних пробелов и всякой дряни там не было

Igor
03.09.2016
20:50:09
в случае с == и None так тоже некорректно делать :)
соответственно
a = get_shit()
if a is not None:
b = a.strip() # или что тебе там надо дальше

V
03.09.2016
20:50:32
т.е. None должен остаться None, а если не None приехало, то тогда уже вот эти выкрутасы со строкой

Stanislav
03.09.2016
20:52:27

Igor
03.09.2016
20:52:41
Эта группа больше не существует