
Matz
17.06.2017
17:17:57
Взаимодействовать с помощью json, encoder/decoder.
Библиотеки уже есть готовые


vadim
17.06.2017
17:28:57
Ребят, может кто подкинет статью/заметку о том как грамотно организовать взаимодействие между приложениями в джанге.
Заметку не подкину, но как у нас подскажу
приложения должны быть максимально независимые, те подразумевается повторное использование
сделать такое и запроектировать на старте нового проекта - нереально,
выйдет сильносвязанный модули с циклическими импортами и тп и тд
у нас обычно запил такой
apps/core - здесь все модели, утилиты и тп
apps/cabinet - бекенды и тп
apps/frontend - собственно фронт
потом уже когда обкатывается бизнес-логика и процессы, идет разбивака - из apps/core и frontend выдеялем часть и получаем что-то вроде
apps/billing - полностью независим от других, предоставляет небольшой API чтобы оным рулить, API это может быть и rest, а может просто настройки. Только не события.
ну и так постепенно в core останется общая часть для всего прожекта и кучка реюзабл аппов

Rookie
17.06.2017
17:30:11

Vlad
17.06.2017
17:30:19

Google

Janek
17.06.2017
17:56:59
Ему вроде надо извлечь все value из списка, который сортирован по sensor

Alexander
17.06.2017
19:55:06
а вы смотрите coverage с acceptance тестами или только с unit тестами? (или другой вариант: вообще не смотрите coverage, к примеру)
у меня ощущение, что для вот этих вот BDD acceptance тестов coverage не особо полезен

Dmitriy
17.06.2017
20:06:13
Кто-нибудь реализовал популярную сейчас тему "просмотры"? Сколько человек прочитало/посмотрело запись/фото. Интересно, как это можно реализовать. Во вьюхе инкриментить соответствующее поле модели при каждым вызове записи с каким-то id?

Егор
17.06.2017
20:06:30
Можно ли в get_context_data context?
добавить несколько context

Сергей
17.06.2017
20:10:30

Егор
17.06.2017
20:15:26
На одной страничке нужно вывести 4 блока информации с разным фильтром Movie.objects.filter(media_content='t')

Сергей
17.06.2017
20:17:13
context по сути словарь, в get_context_data можно этот словарь расширить, добавив свои ключ-значение

Егор
17.06.2017
20:18:06
хмм , спасибо попробую

Сергей
17.06.2017
20:18:45
ток сначала
context = super(ViewName, self).get_context_data()

Google

Vlad
17.06.2017
20:25:48
Использую cache_page для кэширование страницы но если на ней что-то изменяеться(например информация о пользователе) то все равно показываеться старая информация

Alexander
17.06.2017
21:20:56
если Python 3

Rookie
17.06.2017
21:23:20

Vlad
17.06.2017
22:50:55

vadim
17.06.2017
23:11:19
дык его сбрасывать надо

Rookie
18.06.2017
05:55:32
Час
Вот и ответ. Подели страницу на кэшируемые куски, определив каждому куску время обновления. И да, сбрасывать кэш.

vadim
18.06.2017
07:55:23
ну или вариант умного кэша - посмотреть все модельки которые используются во вьюхе, повесить сигналы - на удаление обновления и тп, и по сигналам обнулять кэш конкретной вьюхи

Rookie
18.06.2017
07:59:32

vadim
18.06.2017
08:03:36
час тоже оставить
но вообще прежде чем кеш цеплять, лучше с базой поколдовать

Alex
18.06.2017
12:36:12
Ребят, вместе вьюхи edit_flat вызывается flat_page как решить эту проблему? не меняя url?
''' url(r'flat/(?P<flat_slug>\S+)/$', views.flat_page, name='flat_page'),
...
url(r'flat/(?P<flat_slugi>\S+)/edit/$', views.edit_flat, name='edit_flat'),'''
Решилась проблема перетаскиванием урла edit_flat выше, перед flat_page. Нормальная ли это практика? И как вы решаете подобную ситуацию или отличные прям урлы делаете? Всё таки еарархию лучше соблюдать похожу.
ю

Starky
18.06.2017
15:14:56
Плохой регексп значии

Yaroslav
18.06.2017
15:18:29

Рустам
18.06.2017
17:58:18
Ребят
привет
юзаю дженерик CreateView
Указал в поле fields='__all__'

Google

Рустам
18.06.2017
17:59:11
как исключить несколько полей?
помню было поле
для этих целей

Zhandos
18.06.2017
17:59:38
fields
вроде
ой
не то

Valery
18.06.2017
18:01:17
Подскажите про DRF serializer = SnippetSerializer(snippets, many=True) и serializer = SnippetSerializer(data=data), получается один и тот же класс делает разные действия? а как это реализовано ? в пайтоне разве есть перегрузка метода в зависимости от данных аргументов?

Рустам
18.06.2017
18:02:02
в админки есть поле exclude, в дженериках такого нету?
в первом случае явно указан параметр many, по дефолту он стоит как false

Valery
18.06.2017
18:06:48
ну а тут например он очевидно другое действие делает

Valery
18.06.2017
18:06:49
elif request.method == 'PUT':
data = JSONParser().parse(request)
serializer = SnippetSerializer(snippet, data=data)
так я понял, что в первом случае когда дается только дата вызывается метод create класса, а когда дата и инстас то вызвается update

Zhandos
18.06.2017
18:47:40
user = models.OneToOneField(User, on_delete=models.CASCADE)
handle = models.CharField(max_length=200, default=user.username)
Как правильно написать чтобы по дефолту в модели брала username ?

Boris
18.06.2017
19:23:41

Zhandos
18.06.2017
19:24:14
спасибо. так и сделал

Сергей
18.06.2017
19:30:26

Alexander
19.06.2017
03:06:42
юзаете graphql? нравится?
[ https://gearheart.io/blog/using-graphql-with-django/ ]

Google

.
19.06.2017
13:08:50
Гайз, хочу чтобы пользователь выбирал кол-во объектов для пагинации, делаю это вот так
def get_paginate_by(self, queryset):
if self.request.GET.get('paginate_by'):
paginate_by = self.request.GET.get('paginate_by')
elif self.request.GET.get('paginate_by') == 'all':
paginate_by = 10 ** 10
else:
paginate_by = self.paginate_by
return paginate_byПроблема в том, что если запихать all, то все падает с ошибкой.
ValueError
invalid literal for int() with base 10: 'all' All это тип вывести все объекты, тут еще проблема такая, что я при All в paginate_by просто пихаю огромное число, что наверное не правильно, но не вижу других решений


Сергей
19.06.2017
13:11:53
Гайз, хочу чтобы пользователь выбирал кол-во объектов для пагинации, делаю это вот так
def get_paginate_by(self, queryset):
if self.request.GET.get('paginate_by'):
paginate_by = self.request.GET.get('paginate_by')
elif self.request.GET.get('paginate_by') == 'all':
paginate_by = 10 ** 10
else:
paginate_by = self.paginate_by
return paginate_byПроблема в том, что если запихать all, то все падает с ошибкой.
ValueError
invalid literal for int() with base 10: 'all' All это тип вывести все объекты, тут еще проблема такая, что я при All в paginate_by просто пихаю огромное число, что наверное не правильно, но не вижу других решений
код вьюшки в пастебин. а вообще, если передаётся queryset, то вместо большого числа можно:
paginate_by = queryset.count()

Admin
ERROR: S client not available

Сергей
19.06.2017
13:12:52
а когда передаётся all, он до этой функции доходит?

.
19.06.2017
13:13:12
https://dpaste.de/ZdiG
в нужный иф по какой-то причине не заходит

amureki
19.06.2017
13:15:51
elif self.request.GET.get('paginate_by') == 'all': сюда он у тебя никогда не упадет)
ибо если будет значение 'all', то первое условие верно

.
19.06.2017
13:17:19
Бля, да, спасибо большое, там просто сначала пустая строка передавалась

Pavel
19.06.2017
13:32:25
Всем привет! Вопрос по DRF, у меня есть модель Post и с фронта нужно запрашивать объекты, но не по id а по 2м параметрам, как это лучше реализовать? То есть уникальность определяется по 2м параметрам которые я с фронта получаю

Deus
19.06.2017
13:44:23
filters
Передавши параметрами урла
/post?a=b&c=d

Oleh
19.06.2017
13:59:45
Привет! Подскажите, может у кого был опыт подобного рода. Вопрос по django.
У меня есть две связанные модели Груз и Контрагенты (каждый груз просчитываем через разных контрагентов). В шаблон передаются Грузы и все Контрагенты. Шаблон строит таблицу, где в каждой строке груз, а в одной из ячеек груза находится таблица с информацией о контрагентах соответствующих этому грузу.
Получается первый цикл перебирает все грузы, а вложенный цикл при каждой итерации перебирает всех контрагентов и если он соответствует данному грузу, то выводит информацию о контрагенте. Из-за вложенного цикла шаблон очень тормозит (несколько сотен грузов в каждом по несколько контрагентов)! Как ускорить работу? Спасибо

Tigran
19.06.2017
14:01:59
Привет, нубский вопрос. Как правильно передать параметр в reverse?
роут - 'accounts/confirm-email/(?P<key>[-:\\w]+)/$'
reverse('account_confirm_email', kwargs={'key': context.emailconfirmation.key})
пробую так, жалуется на несуществующий параметр key

Сергей
19.06.2017
14:03:16

Google

Tigran
19.06.2017
14:07:12
ага, он почему то пустой..

Сергей
19.06.2017
14:07:41
context - это что?

Tigran
19.06.2017
14:07:46
вот я создаю инстанс
context.emailconfirmation = EmailConfirmation.objects.create(email_address_id=context.emailaddress.id)
внутри он генерирует ключ
@classmethod
def create(cls, email_address):
key = get_random_string(64).lower()
return cls._default_manager.create(email_address=email_address,
key=key)
но context.emailconfirmation.key почему то пустой

Сергей
19.06.2017
14:08:59


Tigran
19.06.2017
14:10:20
https://pythonhosted.org/behave/context_attributes.html
это контекст behave
т.е у меня вот такой вот степ
@given('a not confirmed email "{email}"')
def user_has_not_confirmed_email(context, email):
context.not_confirmed_email = email
context.not_confirmed_user = get_user_model().objects.create(username='bdd19062017', email=context.not_confirmed_email)
context.emailaddress = EmailAddress.objects.create(email=context.not_confirmed_email, user_id=context.not_confirmed_user.id, verified=False)
context.test.assertTrue(EmailAddress.objects.filter(email=context.not_confirmed_email, verified=False).exists())
context.emailconfirmation = EmailConfirmation.objects.create(email_address=context.emailaddress)
context.test.assertTrue(EmailConfirmation.objects.filter(email_address_id=context.not_confirmed_user.id).exists())