Ответы пользователя по тегу Django
  • Для чего нужен файл apps.py в django?

    Комментировать
  • Почему после сохранения формы обратной связи Django при след. входе на юрл срабатывает метод Get?

    @kazmiruk
    Почитайте внимательно в документации что делает modelformset_factory (djbook.ru/rel1.6/topics/forms/formsets.html#formsets) Здесь он явно не нужен. Просто импортируете Вашу форму во вьюхе и используете ее.
    Ответ написан
    6 комментариев
  • Как в django сделать выбор исполнителя?

    @kazmiruk
    Первое - не используйте транслит в коде. Это очень плохо.
    Второе - Project - содержит FK на User (executor, к примеру), в который записываем выбранного исполнителя (один ведь исполнитель на проект будет?), Otclic - вполне логичная структура в первом приближении. Соответственно заказчик смотрит на все Otclic к своему проекту и выбирает один. user из этого Otclic записываем в project.executor. В принципе все. Т. е. если сократить ответ, то Вы делаете все правильно
    Ответ написан
    Комментировать
  • Какую версию django использовать?

    @kazmiruk
    1.8 сейчас в продакшене, на 1.9 - уже мигрировали, проводим тестирование, пока никаких нареканий нет. Если у людей что-то не работало, то они просто не умеют ее готовить. Разработчики джанги очень ответственно относятся к релизам, прошли все миграции с 1.6 версии до 1.9 - никаких проблем. Читали changelog и меняли места, затронутые в релизе.
    Ответ написан
    4 комментария
  • Что такое model.Models в Python/Django?

    @kazmiruk
    если мы делаем так
    from django.db.model import Model
    то пишем
    class MyModel(Model):
    ....
    если
    from django.db import model
    то так
    class MyModel(model.Model):
    ....
    Ответ написан
    Комментировать
  • Django 1.9 Flatpages, как настроить URLS?

    @kazmiruk
    Добавьте перед urlpatterns
    from django.conf.urls import include
    Ответ написан
    3 комментария
  • Какой у меня уровень django разработчика?

    @kazmiruk
    Я бы сказал, что нет. Из того, что бросилось при беглом просмотре кода - абсолютные пути в settings, несоблюдение pep8 (завершаюший отступ, длина строк. Я сам не считаю, что 80 символов это нормальное значение, но строка в 146 символов это слишком много, хотя бы 120). Нет ни одного теста, импорты выполнены в перемешку, каждый метод модели с декоратором property (не очень вникал в код, может и имеет смысл, но в таком количестве вряд ли), не используете CBV, хотя кое где это уместней, не понятно смысл создания целого аппа ради хранения одной функции в 1 строчку кода, есть явное непонимание того что и где содержится (Profile.objects.create(user=User.objects.get(id=request.user.id)), User.objects.get(id=request.user.id)), не понимание что какие запросы делают (sum([x.total for x in request.user.outlays.filter(type=2)])). Также не увидел нигде индексов, возможно они действительно и не нужны (по коду в основном везде выборки по PK и FK вроде). Нет try\catch для get блока хотя кое-где может плюнуть DoesNotExists (kwargs['inviter'] = User.objects.get(id=data['inviter']))
    В общем много косяков.
    А вообще, по такому коду трудно судить какого Вы уровня, так как в принципе ничего специфичного там нет, даже не знающий джангу напишет такое погуглив пару дней\часов.
    Советую Вам ознакомиться с pep8 подробней + установить себе pep8 и\или pylint, прочитать хотя бы two scoops of django, попрактиковать написание тестов, изучить selenium. Без обид, но пока я бы Вас не взяли на миддла, так как много бы пришлось объяснять и менять за Вами.
    Ответ написан
    1 комментарий
  • Django: Как очистить форму после запроса?

    @kazmiruk
    return HttpResponseRedirect(request.path) в конце выполнения обработки формы.
    Ответ написан
  • Предварительное кеширование страниц?

    @kazmiruk
    Это называется "прогрев" кеша, ничего плохого в идеи нет
    Ответ написан
    Комментировать
  • Symfony2 или Django?

    @kazmiruk
    Мое личное мнение - взял бы python, так как php и Symfony2 в частности приводят к рвотным позывам. Но каждый кулик, как известно.
    На Вашем же месте я бы проинтервьюировал каждую из команд и узнал почему они выбрали django+python, какие плюшки в сравнении с symfony2 (и наоборот), какие сопутствующие технологии собираются использовать, почему именно их и т. п. А потом бы выбрал тех, кто может адекватно ответить на эти вопросы. В любом случае оба инструмента позволят Вам добиться приблизительно одинакового результата, а вот опыт и компетентность команды решают.
    Ответ написан
    Комментировать
  • Сколько не читал - так и не понял суть *args и **kwargs в django. Кто может растолковать что это?

    @kazmiruk
    Это часть python, а не django. Тут вроде доходчиво на русском
    blog.djangofan.ru/2012/03/args-kwargs-python.html
    Но английский лучше все таки подучить.
    Ответ написан
    Комментировать
  • Как отловить замедление ответа nginx+uwsgi+django?

    @kazmiruk Автор вопроса
    Все оказалось очень интересным. Время смтотрелось как среднее время ответа. После релиза ушёл асинхронный запрос, который отрабатывались очень быстро и часто. Соответственно этот запрос перестал маскировать реальные проблемы на сервере с временем ответа в 350 мс.
    Ответ написан
    Комментировать
  • Подгрузка контента Django?

    @kazmiruk
    Джанга тут не при чем. Делаете апи (django-rest-framework можно использовать), а затем яваскриптом отслеживаете скролл на странице. Как только скролл подошел к нижней границе - вызываете апи с запросом на следующую порцию данных. Получив данные отрисовываете их.
    Ответ написан
    4 комментария
  • Как ускорить шаблон Django?

    @kazmiruk
    Как не крутите у Вас буде 1млн итераций, что много. Из более-менее реальных вариантов - вынести этот код из шаблона (генерировать плоский список в контроллере, а затем прокидывать его в шаблон). Т.е. в результате у вас должно быть что-то типа:
    {% for el in l %}
    <span>{{o1.n}}</span>
    {% if el.flag1 %}
    ...
    {% if el.flag2 %}
    ...
    {% endif %}
    {% endif %}
    {% endfor %}

    Хотя шаблоны и компилируются, но в целом выполняются медленнее, чем код. После того, как вы получите метод, генерирующий такой список - кешируйте список (или можно даже закешировать кусок шаблона со списком). Судя по всему это что-то типа хлебных крошек категорий и часто меняться не должен. Так как рендеринг в 3 секунды - ад, то при сбросе кеша этот список надо сразу помещать назад, чтобы не заставлять пользователя ждать. Т.е. должно быть как-то так: сгенерировали новый список, атомарно заменили старый список на новый. Возможно есть еще варианты оптимизации кода (например преобразование списков в словари, исключение повторений в проверках и т.п.)
    Также можно извратиться обертками - не делать полный перебор, а сделать метод, который будет применять бинарный поиск к списку, к примеру. И Вы получите не O(N), а O(log2N). Но опять же тут надо смотреть применимость к Вашему коду.
    Ответ написан
    1 комментарий
  • Как в Django насильно разлогинить пользователя?

    @kazmiruk
    Делается довольно просто: в хеш зашивается поле, к которому сессия должна быть чувствительна. В вашем случае пароль. Получается, что когда пользователь сменит пароль, то все старые сессии станут невалидны автоматом и ничего перебирать не придется.
    Ответ написан
    Комментировать
  • Cтранная логика Django?

    @kazmiruk
    Да, можно. Создаем пустую миграцию, в которой пишем db.execute("что угодно")
    Но так как эта операция не легкая и потенциально опасная, то лучше поменять старые миграции с учетом выставления нужного типа, а на текущей базе провести изменения руками. Таким образом текущие данные будут в InnoDB и новые инстансы проекта будут также в InnoDB
    Ответ написан
    Комментировать
  • Почему не работает update в django?

    @kazmiruk
    Потому что update ушел, но ваш текущий объект никто не обновлял. Судя по ответу от апдейта изменение произошло. Просто теперь Ваш текущий объект устарел и его надо снова запросить из базы, чтобы он стал актуальным.
    Ответ написан
    Комментировать
  • Manage.py makemigrations создаёт неправильные миграции. Как исправить?

    @kazmiruk
    Все запутано, но судя по всему Django ведет себя верно: Вы удалили все миграции и теперь джанго думает, что миграций нет (и мало того они не накачены, так как Вы почистили таблицу). Именно поэтому она создает миграцию с create table, а не alter table. Как вариант исправления - восстановить миграцию, которая создает таблицу без добавленных 3х полей: можно удалить 3 поля из модели, создать миграцию, затем добавить их и создать вторую миграцию, добавить информацию о первой маиграции в django_migrations (как будто она накачена) и затем накатить через migrate вторую миграциюю.
    Ответ написан
    1 комментарий
  • Работают ли транзакции в цикле в Django?

    @kazmiruk
    В настройках подключения к СУБД в джанге укажите 'ATOMIC_REQUESTS': True и все Ваши запросы будут оборачиваться в транзакции
    Ответ написан