
Dan
15.02.2018
12:40:47

Pavel
15.02.2018
12:41:11

Dan
15.02.2018
12:41:27
вообще да
но настоятельно не рекомендуют

Google

Senpos
15.02.2018
12:41:37

kino
15.02.2018
12:44:13
Мне не даёт покоя этот вопрос расскажите в чем разница
как у джанги принято получать данные:через поля модели или через queryset.values()?

Dan
15.02.2018
12:44:40
через поля
values используется при группировке или обрезании лишних полей

Eugene
15.02.2018
12:48:08
Вам к верстальщикам

Artem
15.02.2018
12:49:30
толи написать себе классметод, аки
.to_list()

Dan
15.02.2018
12:51:16
а чем list(qs) не устраивает ?

Artem
15.02.2018
12:51:49
а он потом дергает запрос еще раз
или не дергает, просто я в своем случае делаю .order_by('?')

Eugene
15.02.2018
12:52:32

Massimo
15.02.2018
12:52:32

Google

Artem
15.02.2018
12:52:36
ну незнаю, по мне так себе конструкция, оборачивать потом еще в list()

Dan
15.02.2018
12:52:40
вроде не должен дергать

Artem
15.02.2018
12:53:09
Это же плохо
ну почему же? Когда база сама получит рандом, да конечно перекрутит все записи, но получу точный рандом, да и выполняется он в таске и очень редко

Eugene
15.02.2018
12:54:20
Ну ладно, просто в доке прям вроде как не советуют такое делать


Ruslan
15.02.2018
12:59:46
Ребят, привет.
Я сделал свой самый первый проект на Django (и на Python в целом). Вернее я его еще не сделал, а только самое начало.
На данный момент у меня там только блог, где доступен просмотр всех статей и детальный просмотр одной (с возможностью листания на следующую/предыдущую), и авторизация + регистрация. Просмотр статей в блоге разрешен только авторизованным пользователям. Создание статей - через стандартную админку Django.
Деплоить это на сервак с nginx+uwsgi еще не решился, поэтому показать немогу(
Попробовал даже покрыть некоторые методы тестами (получить покрыть 4 метода), что кстати дало мне приемущество, я несколько баг заметил при юнит-тестинге, которые при ручном тестировании не замечал)
Сейчас я хочу попросить , кому не трудно, дать жесткую критику и сказать, что не так делаю. Прошу на столь раннем этапе проекта, поскольку мне кажется у меня какие-то фундаментальные есть ошибки, хочу их сразу увидеть и при дальнейшем построении проекта не допускать:)
P.S. - проект делаю как и для повышения (пока что нулевых) скиллов, так и положить в портфолио, чтобы показать на собеседовании на стажера/джуна
https://github.com/twilightrus/hooli


Dan
15.02.2018
13:04:30
Ребят, привет.
Я сделал свой самый первый проект на Django (и на Python в целом). Вернее я его еще не сделал, а только самое начало.
На данный момент у меня там только блог, где доступен просмотр всех статей и детальный просмотр одной (с возможностью листания на следующую/предыдущую), и авторизация + регистрация. Просмотр статей в блоге разрешен только авторизованным пользователям. Создание статей - через стандартную админку Django.
Деплоить это на сервак с nginx+uwsgi еще не решился, поэтому показать немогу(
Попробовал даже покрыть некоторые методы тестами (получить покрыть 4 метода), что кстати дало мне приемущество, я несколько баг заметил при юнит-тестинге, которые при ручном тестировании не замечал)
Сейчас я хочу попросить , кому не трудно, дать жесткую критику и сказать, что не так делаю. Прошу на столь раннем этапе проекта, поскольку мне кажется у меня какие-то фундаментальные есть ошибки, хочу их сразу увидеть и при дальнейшем построении проекта не допускать:)
P.S. - проект делаю как и для повышения (пока что нулевых) скиллов, так и положить в портфолио, чтобы показать на собеседовании на стажера/джуна
ну если для портфолио не сот модуль называть обидными словами


Eugene
15.02.2018
13:05:04
?settings.py.example

Ruslan
15.02.2018
13:05:22

Eugene
15.02.2018
13:05:35
Посмотри в сторону Class based views :)

Dan
15.02.2018
13:05:53
не стоит изливать все что приходит в голову =)

Ruslan
15.02.2018
13:06:31
?settings.py.example
А как принято выкладывать конфиг в питоновских проектах? Я оригинальный скрыл, и выложил example для заполнения и переименовывания под себя, так как там БД и остальное.

Eugene
15.02.2018
13:06:34
https://github.com/twilightrus/hooli/blob/master/blog/models.py#L5 хз на скок норм в модели Article делать еще и article_*

Senpos
15.02.2018
13:06:55
class Article(models.Model):
article_title = models.CharField(max_length=200)
article_image = models.URLField(max_length=300)
article_text = models.TextField(default="")
pub_date = models.DateTimeField('date published')
Приставка article у полей лишняя, они и так внутри статьи
Для URLField я бы не делал макс. размер в 300 символов. Рекомендуют для чарфилдов не больше 255: https://docs.djangoproject.com/en/dev/ref/databases/#character-fields
У джанги есть свой хороший пагинатор, лучше использовать его

Bulatbulat48
15.02.2018
13:07:24
ребят как вытянуть данные модели без метода str ?

Eugene
15.02.2018
13:07:30
у urlfield там дефолтный в django max_length норм)

Senpos
15.02.2018
13:07:34
Раз используешь админку для создания статей - рекомендую ее кастомизировать. Там куча полезных настроек для поиска, фильтров и тд.

Dan
15.02.2018
13:08:26
https://github.com/twilightrus/hooli/blob/fdabc63a06a11cf55fa721756a48e9073d48876d/hooli/urls.py#L21
если регулярка не используется лучше использовать path

Eugene
15.02.2018
13:08:41
?по какому-то старому туториалу делал?))

Dan
15.02.2018
13:09:02
там смесь походу

Google

Senpos
15.02.2018
13:09:27
Шаблоны внимательней посмотри, там можно сделать базовый шаблон и наследоваться от него, чтобы не переписывать кучу раз одно и то же

Dan
15.02.2018
13:10:00
HttpResponseRedirect есть shortcut - redirect

Eugene
15.02.2018
13:10:15
https://github.com/twilightrus/hooli/blob/master/blog/urls.py ну и тут можно на path переписать

Senpos
15.02.2018
13:10:55
Получается, нельзя =)
Блин, как-то неудобно ?

Ruslan
15.02.2018
13:12:53
- Дефолтные чарфилды и urlfield
- Приставка article лишняя.
- Class based views
- шорткаты для Http*
- для НЕрегулярок path() вместо url()
- Наследование и расширение шаблонов

Pavel
15.02.2018
13:13:33

Senpos
15.02.2018
13:13:34
+ Использование extends / include в шаблонах
+ использовать встроенный пагинатор, а не свой

Ruslan
15.02.2018
13:13:49
там смесь походу
Смесь гугления, костылей, и велосипедов)
Маны из 1.4/1.8 тоже возможны)

Dan
15.02.2018
13:14:00
https://github.com/twilightrus/hooli/blob/fdabc63a06a11cf55fa721756a48e9073d48876d/users/tests.py#L26
create_user уже сохраняет, не надо его еще раз сохранять
но потом прочитал что тек не стоит делать и перестал

Dan
15.02.2018
13:15:20
на самомо деле таски хранятся в брокере(redis) и туда надо как то запихнуть объект модели
а он не всегда впихуем

Eugene
15.02.2018
13:15:31
https://github.com/twilightrus/hooli/blob/fdabc63a06a11cf55fa721756a48e9073d48876d/users/forms.py ?хмм
class ErrorForm: ???

Pavel
15.02.2018
13:16:36

Ruslan
15.02.2018
13:16:43

Artyem
15.02.2018
13:17:40

Dan
15.02.2018
13:17:44
https://github.com/twilightrus/hooli/blob/fdabc63a06a11cf55fa721756a48e9073d48876d/users/forms.py#L35
лучше использовать ModelForm
а еще лучше уже готовые формы из джанги

Google

Ruslan
15.02.2018
13:20:40

Senpos
15.02.2018
13:21:30
В общем, оформим сейчас эти таски по другому, спасибо за подсказки

Pavel
15.02.2018
13:22:28

Senpos
15.02.2018
13:22:36
ага, так и сделал

Ruslan
15.02.2018
13:23:34
class ErrorForm: ???
Назвал неправильно класс и методы, или вообще не стоило выносить это в Mix-in класс?

Eugene
15.02.2018
13:24:06

Dan
15.02.2018
13:25:11
@twilightrus
https://github.com/twilightrus/hooli/blob/e4ceab8ce68fc055692a11b78aa0976e6acbc929/blog/views.py#L14
нет пагинации

Massimo
15.02.2018
13:25:26
Если в модели есть м2м поле через которое привязаны объекты, в темплейте объекты как отобразить?
{% for item in qs %}
{% for newitem in item.m2mfield %}
{% endfor %}
{% endfor %}

Admin
ERROR: S client not available

Ruslan
15.02.2018
13:26:17
просто не понял зачем это:)
Чтобы не дублировать код во вьюхах, я свои велосипеды получается написал, для проверки в темплейте на наличие ошибок и получения списка ошибок, а то я не нашел как правильно пользоваться джанговскими методами для получения списка ошибок без HTML-кода перед ними (типа ul)
Там просто для получения ошибочных данных нужно 2 цикла писать, так что у меня было 2 выбора, либо выносить в темплейт-тэг, либо вот в такие методы в mix-in класс и наследоваться от него

Dan
15.02.2018
13:27:54

Massimo
15.02.2018
13:29:26

Denis
15.02.2018
13:33:37
ребят что делают не так?
не могу подключить juery локально.
<!— jQuery —>
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script src="../lib/jquery.equalheights.js"></script>

Massimo
15.02.2018
13:34:14

Dan
15.02.2018
13:34:24
<script src="{{ STATIC_URL }}lib/jquery.equalheights.js"></script>
или через {% static %}

Denis
15.02.2018
13:34:56
{% load static %} в самом верху документа
или не поможет?

Massimo
15.02.2018
13:35:33
поможет

Google

Denis
15.02.2018
13:35:40
не помогает =(

Massimo
15.02.2018
13:35:51
подожди
{% load staticfiles %}
<script src="{% static '/home/js/main.js' %}"></script>
вот пример
STATIC_URL = '/static/'
первой прогружаешь все статичные пути
во второй указываешь конкретный путь к документы
в Static_URL указывается папка где лежит весь статик

Robot
15.02.2018
13:39:40

OlegBrony
15.02.2018
13:39:59

Denis
15.02.2018
13:41:22
[15/Feb/2018 13:40:43] "GET /lib/jquery.equalheights.js HTTP/1.1" 200 6348
но толку нет

Massimo
15.02.2018
13:41:46

Denis
15.02.2018
13:42:21

Massimo
15.02.2018
13:42:47
поэтмоу я и гвоорю
что есть STATIC_URL
и STATIC_ROOT

Denis
15.02.2018
13:43:57
ок, спасибо щас почитаю чтобы не тупить