
Konstantin
17.01.2017
20:20:35

f1nnix
17.01.2017
20:21:11
Также я вижу, что есть интеграция с webpack в этом проекте: https://github.com/aleccunningham/django-react
Webpack — это популярный сборщик для морды.

Google

f1nnix
17.01.2017
20:22:31
Наверняка, ваши фронтендщики используют его. Они могут помочь немного с ним.

Konstantin
17.01.2017
20:23:08
так, а на сегодня проблема с рендерингом вообще актуальна? поисковики, я слышал, поисковики вроде норм JS относятся. Не?

parikLS
17.01.2017
20:25:58

Stanislav
17.01.2017
20:26:43

parikLS
17.01.2017
20:27:14
понятно

Konstantin
17.01.2017
20:28:46
ладно парни, судя по всему пробема есть... для меня, консольщика и бекенщика, она не понятна ;) но решать придется...

Mirjalol
18.01.2017
06:08:24
Ребята у меня есть вопрос по формы, если кто то изменит аттрибут "name" в форм фиелд MultiDictValueError ошибка будет, например если я изменяю
<input name="username" />
на
<input name="nousername" />
Ошибка будет. Как зашитить это?

Denis
18.01.2017
07:53:54
А что ты собрался защищать?
except MultiDictValueError:
form. invalid()
?

Rookie
18.01.2017
08:01:34

Denis
18.01.2017
08:02:34
Дык и я о том же

Rookie
18.01.2017
08:03:35
Я думаю, что он пытается в dynamic fields.

Google

Denis
18.01.2017
08:03:39
Ну захочет он name поменять, ну вылезет ему 500. А надо что, радугу показать?

Rookie
18.01.2017
08:03:49
Просто не верно задает вопрос.

Denis
18.01.2017
08:04:27
Ну дождемся первоисточника

Rookie
18.01.2017
08:04:36
name и id - это джанга сама отдает же?
То есть, у нас, вроде в конструктор не передается это?

Denis
18.01.2017
08:05:43
Ну если ты подаришь как form
Id не валидируются

Rookie
18.01.2017
08:07:34
А там разве вопрос о валидации? Его же нэйминг тревожит, вроде?
class PointsForm(forms.Form):
def __init__(self, *args, **kwargs):
extra = kwargs.pop('extra')
tournament = kwargs.pop('tournament')
super(PointsForm, self).__init__(*args, **kwargs)
for team in extra:
if tournament.single_player is False:
self.fields['%s' % team.team_1.id] = forms.IntegerField(widget=forms.TextInput(
attrs={'placeholder': 'Очки', 'class': 'form-control'}))
self.fields['%s' % team.team_2.id] = forms.IntegerField(widget=forms.TextInput(
attrs={'placeholder': 'Очки', 'class': 'form-control'}))
else:
self.fields['%s' % team.player_1.id] = forms.IntegerField(widget=forms.TextInput(
attrs={'placeholder': 'Очки', 'class': 'form-control'}))
self.fields['%s' % team.player_2.id] = forms.IntegerField(widget=forms.TextInput(
attrs={'placeholder': 'Очки', 'class': 'form-control'}))

Denis
18.01.2017
08:08:15
Нейминг головного мозга?

Rookie
18.01.2017
08:08:47
Я вот про что. То есть, когда мы заранее не очень знаем сколько полей у нас может быть.
Только у него name

Starky
18.01.2017
08:10:04
блин ребзя вы предупреждайте когда глаза закрывать, а то больно смотреть

Denis
18.01.2017
08:10:21
Обычно подобное делается через formfactory

Rookie
18.01.2017
08:11:10
Как вариант. Я просто предложил пример того, что он может хотеть) Филиал Бабы Ванги)

Denis
18.01.2017
08:12:18
Мой бубен в ремонте

Starky
18.01.2017
08:12:37
1е правило бойцовского клуба - бить по рукам за копипасту =) иначе тех. долг бует бить в бубен

Rookie
18.01.2017
08:13:43
Бро, это мой код)) Гаденько, мгм. Одно из "временных решений" )

Starky
18.01.2017
08:18:24
как показывает практика - нет ничего более постоянного чем временное. мне доводилось (и не раз) чинить временные решения которым по 5 лет...

Google

Starky
18.01.2017
08:19:14
ну конечно это дело каждого как писать и что, но лучше же сразу норм сделать если такое решение работает

Denis
18.01.2017
08:21:43
Нет ничего долговечнее, чем временное

Rookie
18.01.2017
08:22:59
Над этим я и насмехался сейчас)
На самом деле, этот костыль упразднен в пользу жыэса в шаблоне.

Denis
18.01.2017
08:27:06
Блин, в метро(( не сразу отправляется

Eugene
18.01.2017
12:16:25
Так, есть новость, у нее есть описание и заголовок. Есть любой юзер, который может предложить исправить информацию в этой новости. Как такое реализовать?

Rookie
18.01.2017
12:20:42
Да как угодно. js комбинация клавиш, собирает выделенный текст или нужные селекторы (привязать на селекторы нужное из БД - не проблема, да), собираем это всё в какой то массив, скармливаем вьюхе в виде уведомления админу ресурса. Это если нет желания пилить кнопку.

Eugene
18.01.2017
12:22:13
ну, как это сделать, я примерно знаю. Мне вот больше интересно как базу спроектировать. где хранить эти изменения и как

Rookie
18.01.2017
12:23:44
m2m users.is_staff (или кто там у тебя имеет полномочия принимать такие сообщения) на сами запросы.

Denis
18.01.2017
14:41:38
Я так понимаю нужно реализовать механизм ревизий?

Eugene
18.01.2017
14:42:43
Ну, например ты зашел - решил отредактировать новость и отправить ее , в Википедии вроде так
Мне вот не нравится идея менять статью полностью и сразу сохранять

f1nnix
18.01.2017
14:44:04
У меня сейчас похожая задача. Я сделал просто — положил в Git, создал модель Transaction (для мета-полей, там много всякой доп. инфы к транзакции) и просто дергаю Git из приложения. В инстанс Transaction сохраняю идентификатор коммита.

f1nnix
18.01.2017
14:45:19
Тут типа-B2B и производительность и лучшие практики deaign patterns мне не критичны в данном случае, ггг.
Но у меня еще полно файлов, не только текст. В целом стейт файлового дерева надо сохранять.

Denis
18.01.2017
14:47:13
Проще сделать отдельную модель для ревизии с релейшеном на новость и булевым полем на апрув
+ сигнал на пост_сейв если апрув в Тру, то проапдейтить новость
сообщение для администрации выводить с помощью какой нить difflib

Eugene
18.01.2017
14:52:51
http://django-reversion.readthedocs.io/en/stable/index.html думаю попробовать через это реализовать

Starky
18.01.2017
15:36:11
учти что она знает только за стандартные джанго модели
если у тебя поверх какой-то функционал - оно не будет знать как с ним работать

Google

Starky
18.01.2017
15:37:22
и при восстановлении - оно восстановит все что было в ревизии включая FK и если фк не будет на момент восстановления - получишь интегрити эррор

Rookie
18.01.2017
15:38:43
Мне вариант с гитом понравился. Возьму на заметку, если что то подобное будет нужно.

Starky
18.01.2017
15:38:46
а если восстановишь все сразу - то оно заафектит все, и ты получишь по факту фк обьект из ревизии другого обьекта, и данные могут (и в 95% случаев будут) различатся

Rookie
18.01.2017
15:40:28
Не знаю, мне в любом случае кажется оверхедом тащить целый пакет для того, чтобы хранить 2 состояния записи и нотайс.

Mirjalol
19.01.2017
05:08:19
Я хочу создать временный URL-адрес без использования базы данных. Есть идеи?

Michael
19.01.2017
05:43:17
урл -> вьюха -> кеш?

Mirjalol
19.01.2017
05:44:30
http://stackoverflow.com/questions/25292052/send-email-confirmation-after-registration-django
Исползую это

Denis
19.01.2017
07:33:59

Admin
ERROR: S client not available

Mirjalol
19.01.2017
07:34:45
дополнительное поле не надо по моему

Denis
19.01.2017
07:37:29
Ну а как ты собрался детектить пользователя?

parikLS
19.01.2017
07:47:02
Ключ хеш - значение мейл

Denis
19.01.2017
08:07:48

parikLS
19.01.2017
08:09:51
Почему

Denis
19.01.2017
08:24:38
Потому что оно вычисляемо

parikLS
19.01.2017
08:26:34
Щито?

Denis
19.01.2017
08:37:54
Простой пример - я регаю акк на "Несвою" почту... беру хеш от почты... и вуаля - я на сайте без использования ящика
Привет боты

Google

parikLS
19.01.2017
08:39:54
Хеш генерируется рандомно, юид например

Starky
19.01.2017
08:40:29
ключ хеш от мыла, значение - юид, в ссылке юид рандомный
и все, не подберешь. а вообще в джанго мире вроде есть пакет с уже имплементированными временными ссылками
только щас не вспомню как он называется

Denis
19.01.2017
08:42:32
По хорошему счёту у "временной ссылки" должно быть expired_time

parikLS
19.01.2017
08:43:18

Denis
19.01.2017
08:44:20
redis.setex
Я понял уже что ты любишь редис... Но ставить сервак только ради ссылок - через чур
Зависимость от внешних сервисов - не есть хорошо
Другое дело, если б селери какой нить крутился... кеш, сессиии... тогда да

parikLS
19.01.2017
08:49:00
внешних относительно кого? джанги? а база тогда не внешний сервис? редис поставить - 1 минута дела, зато ты сразу получаешь быстрый кей велью и для кеша и для сессий и в том числе для временных ссылок

Denis
19.01.2017
08:53:50
Чё уж там, гуляж так гуляж - Кролика для селери(потом возможно пригодится), редис для кеша, ссылок, сессий, монгу для динамических моделей, оракл для остальных... В итоге у нас норм бложек получится
а... и ещё эластик для поиска)))

parikLS
19.01.2017
08:56:32
норм
мне нравится
ахаххахах)))
ну хз, я не считаю редис оверхедом, имхо он вообще ничего не стоит в плане установки и настройки
зато дает много бенефитов

Denis
19.01.2017
09:05:45
Я к тому веду, что использование тех или иных внешних сервисов должно быть обусловлено необходимостью всего проекта, а не только ради одной свистоперделки. Я сам люблю редис, использую практически на всех крупны проектах... но нужно понимать необходимость в использовании той или иной технологии. Если на проекте уже используется редис, то да - ничего против хранения там каких то временных данных я не имею, наоборот - нет лишних полей в бд, нет заморочек с вычислением времени жизни...
хотя в плане кей велью я больше склоняюсь к использованию тарантула... однако пока ковыряю его только в образовательных целях...

Pavel
19.01.2017
09:07:18

Denis
19.01.2017
09:08:43
Например, если на проекте используются только фильтры по каким то полям модели, ты ж не станешь впиливать поисковый движок? И наоборот, если основной целью проекта является поиск инфы в огромной бд, ты же не станешь это делать sql запросами