@python_beginnersЭта группа больше не существует

Страница 399 из 1885
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', )

Показывай settings и конфиги вебсервера.
location /static/ { root /home/alex/Projects/gkk; }

что может быть не так? только статику админки не коллектит, остальное есть

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
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
Но все равно ноль эффекта
Есть один костыль, можно из сорцов джанго, из модуля admin скопировать к себе в static/admin

Выглядит не очень, но работает

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

Спасибо :)

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
Наверное ты хотел вот это myList.append((val,key))
сам вопрос жудко тупой, везде ошибки в коде, поправлял каждую строку

Admin
ERROR: S client not available

⬗VLAD⌶K⬖
03.09.2016
17:02:09
Наверное ты хотел вот это myList.append((val,key))
это не мой код, код с вопроса=)

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
static_root - это место, куда собираются файлы из staticfiles_dirs и из /static/ всех приложений.
все, решил проблему, дело было в том что я в обеих настройках одинаковую директорию указывал. поставил другую директорию, подправил nginx и заработало))

Питон
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
a = None a.strip() if a else print('no')
как-то не совсем правильно, потому что если a = False (или a = ""), то будет срабатывание print('no')

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 приехало, то тогда уже вот эти выкрутасы со строкой

Igor
03.09.2016
20:52:41

Страница 399 из 1885

Эта группа больше не существует Эта группа больше не существует