Ответы пользователя по тегу Django
  • Как лучше хранить настройки проекта Django?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Разбивать настройки по разныим *.py файлам для разных окружений не очень удобно.

    Удобнее иметь один settings.py, который импортирует настройки из какого-нибудь общераспространённого формата (json, ini, etc). В этом плане django-environ может быть удобным, но не обязательным решением.

    держать его вне системы контроля версий

    Делать это не нужно. Хотя можно держать конфиги вне репозитория приложения — в отдельном репозитории со скриптами деплоя (так как не все люди, имеющие доступ к исходникам, должны иметь доступ к параметрам деплоя, и наоборот).

    Держать настройки непосредственно в *.py файлах неудобно по тому, что в них, кроме прямых указаний параметров, ещё может быть разный код для их подготовки (всё-таки, это обычный код на Python). При доставке кода на сервера такие конфиги так или иначе генерируются. В итоге усложняется разработка - появляется необходимость править код и в *.py файле, который использует разработчик и в шаблоне этого же файла, который будет использоваться для генерации конфига на сервере. Такой подход — прямой путь к багам.
    Ответ написан
    Комментировать
  • Как в django реализовать оператор #>>?

    Tiendil
    @Tiendil
    Разработчик ПО.
    RawSQL и вообщеще запросов на SQL смущаться не надо :-) это вполне нормальная практика.

    ORM делаются для упрощение жизни, но если мы что-то упрощаем, то что-то обязательно усложнится. В случае ORM усложняются нестандартные запросы. Если начать допиливать расширения для ORM, то работа с ней может стать сложнее формирования запросов на SQL и пропадёт весь профит.

    Поэтому, на мой взгляд, правильнее сложные запросы писать на SQL, а простые делать с помощью ORM, если так удобнее.

    P.S. При сложных запросах Django ORM значительно тормозит сама по себе (из-за суровой внутренней логики). Разработчики Django это исправляют, но очень медленно.
    Ответ написан
    Комментировать
  • Несколько баз данных в Django. Реально ли?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Ни одна база так не умеет, это нарушает саму концепцию БД.

    Идеологически верная архитектура:

    - N отдельных магазинов, хранящих свои внутренние данные в своих базах.
    - 1 общий сервис (с отдельной базой), который управляет общими данными и в который другие обращаются по необходимости.
    Ответ написан
    Комментировать
  • Возможно ли интегрировать Django с Wordpress?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Интегрировать можно что угодно с чем угодно, но, как тут уже заметили, зачем?

    Идеалогически более верно было бы интегрировать Wordpress с чем-нибудь на php.

    Если действительно очень надо (простаивает команда питонщиков, например), то разумнее интегрировать не через базу, а через создание веб api, по которому сервисы и будут обращаться к Wordpress. Я даже думаю, что такое api уже есть.
    Ответ написан
    Комментировать
  • Какой процент задач при разработке на python/django вы покрываете с помощью готовых решений?

    Tiendil
    @Tiendil
    Разработчик ПО.
    С нестандартным фунционалом не сможете, потому что он, собственно, нестандартен и готовых решений для него нет по определению.
    Ответ написан
    Комментировать
  • Как правильно называть модели в Django?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Называйте с учётом имени приложения, для которого определяются модели, так как оно несёт дополнительную семантику. Поэтому, если в приложении ожидаются только теги одного типа, то указывать к чему они относятся не надо. Если ожидаются теги для разных сущностей (что, для тегов, странно), то уже надо указать.

    Скорее всего у вас будет что-то вроде

    from forum import models as forum_models
    
    do_smth_wiht(forum_models.Post)
    do_smth_wiht(forum_models.Tag)


    Если
    Ответ написан
    Комментировать
  • Растет память процесса python.exe при отладке. В чем может быть проблема?

    Tiendil
    @Tiendil
    Разработчик ПО.
    При DEBUG=True Django сохраняет все запросы, проведённые к базе. Возможно, это это как-то влияет.

    Подробнее см. тут: https://docs.djangoproject.com/en/1.7/faq/models/#...
    Ответ написан
    Комментировать
  • Будет ли обновления интерфейса django admin?

    Tiendil
    @Tiendil
    Разработчик ПО.
    когда разработчики разрулят эту проблему на уровне самого фреймворка.

    Разработчики не собираются разруливать это, т.к. не считают «это» проблемой. Официальная позиция примерно такая:

    Админка джанго предназначена для разработчиков и только для разработчиков. Хотите что-то более крутое — пилите сами.
    Ответ написан
    Комментировать
  • Как реализовать логику с модели Django?

    Tiendil
    @Tiendil
    Разработчик ПО.
    >Подскажите, как или куда вы выносите логику модели, которая делает некие изминения над атрибутами модели при выводе?

    1. Расчёт rate в примере — это не совсем логика. Просто атрибут модели, который можно рассчитать, вместо того, чтобы хранить. Такие атрибуты вполне можно оставлять в модели.
    2. Именно логику (операции над моделями) лучше отделять от них — можно просто в отдельный модуль вынести. Либо в менеджер, если они низкоуровневые.
    3. Если объект, представляемый в модели, сложен (предполагает большое количество данных в разных форматах с кучей связанных объектов, необходимостью кэширования и так далее), то имеет смысл оставить модель представлять уровень БД (для общения с базой, миграций и так далее), а для представления объекта в логике реализовать отдельный класс, объекты которого будут инициализироваться данными из модели.
    Ответ написан
    Комментировать
  • Как исправить ошибку South миграции?

    Tiendil
    @Tiendil
    Разработчик ПО.
    При создании миграции South фиксирует не всю схему БД, а только таблицы, связанные с текущим приложением. Возможно, вы пытаетесь вручную добавить ForeignKey на модель, о которой данная миграция не знает.

    Смотрите в сторону опции --freeze у schemamigration
    Ответ написан
    Комментировать
  • SOA и django. Как расшарить юзеров/группы/токены на несколько бекэндов?

    Tiendil
    @Tiendil
    Разработчик ПО.
    А OAuth не подойдёт (или вариация на эту тему)? Т.е. юзеры хранятся в одном сервисе, а другие обращаются к нему за разрешениями.

    Гуглить можно начать на тему Authentication/Authorization server.

    Имхо, самый простой вариант — это просто экспортировать юзеров во все сервисы.

    Ещё одно решение — вынести всю инфу по ним в отдельную базу и дать всем серсивам readonly доступ.
    Ответ написан
    Комментировать
  • Как упростить код сигнала в Django?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Напишите декоратор, который принимает список моделей, а внутри оборачивает функцию в @receiver для каждой из них.

    Примерно так.

    def my_receiver(models):
    
        def decorator(func):
            for model in models:
                func = receiver(pre_save, sender=model)(func)
            return func
    
        return decorator
    
    @my_receiver(models=[Model1, Model2, Model3])
    def recalculate_data(instance, **kwargs):
        pass
    Ответ написан
    1 комментарий
  • Какой оптимальный вариант модели для описанной задачи (Django)?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Из представленных вариантов я бы выбрал 2. Проблемы с добавлением новых стран на самом деле нет — достаточно считать, что если страны нет в словаре. то ей соответствует какая-то, заданная по умолчанию, дата. Усложнения логики проверки тоже не вижу.

    Почему нет варианта простой модели вида [user_id, country, date]? Удобно делать проверки и выборки.

    >пользователей ожидаю не больше 5-10к
    За какой период времени? Надо смотреть пиковые нагрузки.
    Если это общее число, то скорее всего вообще не надо переживать по поводу нагрузки, а делать как удобно
    Ответ написан
    1 комментарий
  • Какие есть хорошие книги по Django?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Читайте родную документацию, она у джанго хорошая и всегда актуальная. Учить его по книгам, тем более со старыми версиями, не имеет смысла — окажитесь в прошлом. Да и не такая уж это сложная система, чтобы отдельные книги про неё писать.

    Официальная документация и практика — наше всё.
    Ответ написан
    Комментировать
  • Как лучше организовать кэширование в Django?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Мне кажется, что тормозит не рендер шаблонов, а что-то другое.

    >Собственно вопрос как кэшировать большие блоки при этом сохранять в них индивидуальную информацию для каждого из юзеров
    Перенести отображение этой информации на сторону JavaScript. Кэшируется блок html без изменяемых данных, а в браузере JS отдельно их устанавливает.

    >получается, что даже выставив время жизни 12 часов, каждый второй посетитель будет сталкиваться с долгим ожиданием.
    1. можно выставить время в 120 часов :-)
    2. можно весь html генерировать на диск и раздавать статику, обновляя только во время обновления товаров.
    3. написать скрипт, который будет периодически обходить сайт и инициировать кэширование.

    Заодно рекомендую почитать про версионирование кэша.
    Ответ написан
    2 комментария