
Senpos
01.04.2017
16:36:48
Сори он слишком личный и он использует несколько личных пакетов для seo и оформления админки (стилизацию). Он тебе не подойдет
Даже не личный мой а компании скорее
@dizkard

Denis
01.04.2017
20:16:35
Народ, мб провокационный вопрос - но в каких случаях используете Flask? Я поймал себя на мысли что использовал его за ~2.5 года только 1 раз
Мб я что то не понимаю)?

Google

b0g3r
01.04.2017
20:17:42

Denis
01.04.2017
20:18:15
Но ладно

Serge
01.04.2017
20:27:20

Denis
01.04.2017
20:27:47

Serge
01.04.2017
20:28:18
Например боты для чат месенжеров, фласк туда идеально заходит

Eugene
01.04.2017
20:33:14

Serge
01.04.2017
20:33:44
Я слышал о нем. Но я умею на фласке и мне как-то лениво его изучать.

Alex
01.04.2017
21:56:17

Eugene
01.04.2017
21:57:24

Serge
01.04.2017
22:16:53

Eugene
01.04.2017
22:28:57
Кому что нравится
неправильный подход. надо инструменты и средства выбирать такие, которые лучше решают задачу

Alex
01.04.2017
22:29:11

Google

Serge
01.04.2017
22:29:17
Фласк идеально решает мои задачи

Eugene
01.04.2017
22:29:45
ну просто ты варишься в нем и не знаешь что другие лучше

Denis
01.04.2017
22:29:52

Eugene
01.04.2017
22:29:57
кругозор то надо расширять

Denis
01.04.2017
22:30:06
И лучше использовать не очень подходящие зато проверенные средства
Т.к. тогда задача будет реализованаа быстрее

Serge
01.04.2017
22:30:27

Eugene
01.04.2017
22:30:29

Serge
01.04.2017
22:31:56
Основные доводы что "лучше". Однако будет работать одинаково что на фласке что на другом легком, остальное перефекционизм, не всегда оправданный

Alex
01.04.2017
22:32:33

Serge
01.04.2017
22:32:45
Единственное что мне во фласке не нравится это неподдержка из коробки регулярок в роутинге

Senpos
02.04.2017
07:28:28
Доброе утро.
Пробую задеплоить проект на Heroku.
Не могу правильно настроить Procfile, точнее, путь к wsgi, который схавает gunicorn.
Путь к wsgi в проекте:
|Procfile
|src/
|--senpos_ga/
|-- --wsgi.py
Как я пытался:
web: gunicorn src/senpos_ga.wsgi --log-file -
web: gunicorn src/senpos_ga/wsgi.py --log-file -
web: gunicorn src.senpos_ga.wsgi --log-file -
Если положить Procfile внутрь папки src, то все работает. Но хотелось бы оставить структуру как есть : )
Нашел ответ:)
web: gunicorn senpos_ga.wsgi --chdir src/ --log-file -

Max
02.04.2017
08:54:15
Всем привет , скиньте телеграм чат по java

Aleksey
02.04.2017
09:28:35

Senpos
02.04.2017
10:08:48
Подскажите как правильно работать с статикой.
Мои настройки для статики из settings.base
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
)
STATIC_ROOT = os.path.join(BASE_DIR, "live-static", "static-root")
MEDIA_URL = "/media/"
MEDIA_ROOT = os.path.join(BASE_DIR, "live-static", "media-root")
settings.production
MIDDLEWARE += [
'whitenoise.middleware.WhiteNoiseMiddleware',
]
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
Сделал python manage.py collectstatic
Файлы появились в live-static/static-root как и ожидалось
На Heroku сделал DISABLE_COLLECTSTATIC=0
Но результат такой: https://senpos-ga.herokuapp.com/admin/
Файлы не подгрузились.
Сервер ищет файлы в
https://senpos-ga.herokuapp.com/static/admin/css/base.ba3dc2f88fc5.css
whitenoise==3.3.0 добавлен в requirements.txt и скормлен Хероку

Google

Pavel
02.04.2017
10:12:45
а обработка /static/ на хероке как-то настраивается?

Senpos
02.04.2017
10:13:22
Из того что я видел - нет. Но могу ошибаться, конечно

b0g3r
02.04.2017
10:14:17
https://devcenter.heroku.com/articles/django-assets

amureki
02.04.2017
10:14:37
вот пример можешь глянуть тут https://github.com/amureki/lunch-with-channels

Pavel
02.04.2017
10:14:42
а live-staitc в пути откуда взялся? в мануле его нет

Senpos
02.04.2017
10:15:00
@b0g3r @amureki спасибо, буду пробовать
Немного модифицировал пример и остановился на таких настройках
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
Теперь все работает отлично! :)
Правильно ли я понимаю? В staticfiles попадет вся моя статика. И если я удалю файлы оттуда и не сделаю collectstatic, то стилей в той же админке не будет?
Магия в том, что я удалил все из папки staticfiles, а стили в админке все-равно есть :D
(я нажимал Ctrl+F5 чтобы сбросить кэш)

Denis
02.04.2017
12:04:39
Потому что у тебя debug=True

Senpos
02.04.2017
12:09:20
Потому что у тебя debug=True
Нет. По крайней мере так быть не должно.
Это легко проверить, если перейти по неверной ссылке. Там будет стандартный "Not found", без отладочной информации.
Procfile
web: gunicorn senpos_ga.wsgi --chdir src/ --env DJANGO_SETTINGS_MODULE=senpos_ga.settings.production --log-file -
senpos_ga.settings.production: http://vpaste.net/oWqsv
Кажется я понял почему так случилось. Я сделал collectstatic с локальными настройками и залил.


Vadim
02.04.2017
13:59:39
ребят, в доках по mptt написано:
tree_info: Given a list of tree items, iterates over the list, generating two-tuples of the current tree item and a dict containing information about the tree structure around the item, with the following keys:
'new_level'
True if the current item is the start of a new level in the tree, False otherwise.
'closed_levels'
A list of levels which end after the current item. This will be an empty list if the next item’s level is the same as or greater than the level of the current item.
в шаблоне пишу:
{% full_tree_for_model menu.Category as category %}
{% for cat,structure in category|tree_info %}
<a><b>{{ cat }} {{ structure }}</b></a>
{% endfor %}
выводит:
blues {'closed_levels': [], 'new_level': True} rock {'closed_levels': [], 'new_level': False} hard rock {'closed_levels': [], 'new_level': True} pop rock {'closed_levels': [1], 'new_level': False} Напитки {'closed_levels': [], 'new_level': False} Алкогольные {'closed_levels': [], 'new_level': True} Пиво {'closed_levels': [2, 1, 0], 'new_level': True}
я ваше не понимаю логики
почему у blues new level True если он не порождает уровней новых?
и наоборот у rock new level False, a он порождает hard rock
конец вопроса

Google

Vadim
02.04.2017
16:44:14
Снят вопрос
Любой вопрос сначала должен вылежаться)))

Artyom
02.04.2017
16:58:36
подскажите, кто нибудь, пожалуйста) начал миксины изучать, каким образом я могу определить вьюшку от двух классов с методами get_context_data()? Например class FavoriteView(ListView, MyMixin), если у MyMixin переопределен get_context_data?
Если конкретнее, то есть миксин, который отдаёт контекст всей основной страницы(сео дата, менюшки всякие), от которого хотелось бы наследовать все страницы сайта. Или есть другой путь отдавать в контекст ту дату, которая нужна на каждой странице сайта? Избегая постоянного переопределения get_context_data()

Logerk49
02.04.2017
17:22:54
в django.contrib.auth views нет функции регистрации?

amureki
02.04.2017
17:23:34
подскажите, кто нибудь, пожалуйста) начал миксины изучать, каким образом я могу определить вьюшку от двух классов с методами get_context_data()? Например class FavoriteView(ListView, MyMixin), если у MyMixin переопределен get_context_data?
Если конкретнее, то есть миксин, который отдаёт контекст всей основной страницы(сео дата, менюшки всякие), от которого хотелось бы наследовать все страницы сайта. Или есть другой путь отдавать в контекст ту дату, которая нужна на каждой странице сайта? Избегая постоянного переопределения get_context_data()
google context processors


Artem
02.04.2017
17:24:28
подскажите, кто нибудь, пожалуйста) начал миксины изучать, каким образом я могу определить вьюшку от двух классов с методами get_context_data()? Например class FavoriteView(ListView, MyMixin), если у MyMixin переопределен get_context_data?
Если конкретнее, то есть миксин, который отдаёт контекст всей основной страницы(сео дата, менюшки всякие), от которого хотелось бы наследовать все страницы сайта. Или есть другой путь отдавать в контекст ту дату, которая нужна на каждой странице сайта? Избегая постоянного переопределения get_context_data()
https://ccbv.co.uk/ очень хороший ресурс тебе поможет в твоих вопросах

Artyom
02.04.2017
17:33:08
Спасибо всем

Logerk49
03.04.2017
05:43:10
у меня есть таблица заметки и в ней поле
author = models.ForeignKey('auth.User')
как сделать фильтр по автору?
точнее, чтобы авторизованному пользователю выводились заметки только его авторства

Vlad
03.04.2017
05:48:38
Обычно пользователь есть в запросе, поэтому .filter(author=request.user)

Logerk49
03.04.2017
05:50:08
сработало
спасибо
а как сделать проверку, чтобы определенный пользователь мог просматривать только свои заметки
потому что через note/6/ я, например, могу получить доступ к заметку другого пользователя

Dan
03.04.2017
05:53:36
в request.user хранится текущи пользователь
чтобы получить доступ к записям другого пользователя нужно залогиниться под другим пользователем
как паравило если страница доступна только для авторизованного пользователя то ставят декоратор login_required

Logerk49
03.04.2017
05:55:26
это да
когда я хочу подробно открыть заметку, то получается так http://127.0.0.1:8000/note/5/ и если зайду под другим пользователем, то все еще могу перейти на /note/5

Dan
03.04.2017
05:58:25
note = Note.objects.get(pk=5)
if note.author != request.user:
return redirect('/')

Google

Dan
03.04.2017
05:58:59
как то так примерно

Dmitriy
03.04.2017
06:02:08
Можно проверить есть ли id note из requests в списке, который ты получил фильтром по автору. Но вариант выше вроде бы более очевидный.

Logerk49
03.04.2017
06:02:42
работает
note = Note.objects.get(pk=5)
if note.author != request.user:
return redirect('/')
как то так примерно
спасибо

Denis
03.04.2017
06:13:25

amureki
03.04.2017
06:15:29
А лучше один миксин на каждую из create/detail/delete вьюшек, переопределяющий dispatch метод

Denis
03.04.2017
06:16:06
Да, это вообще хорошо

Logerk49
03.04.2017
06:16:53
не понял
А лучше один миксин на каждую из create/detail/delete вьюшек, переопределяющий dispatch метод
можно поподробнее