Ответы пользователя по тегу Django
  • С чего начать изучать django?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    Начинать, ну и собственно продолжать - нужно с ресурса Django documentation
    Если слишком сложно - то можно попробовать с Django girls
    Ответ написан
    1 комментарий
  • Django. Не работает пагинация,, что делаю не так?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    Ну так вы итерируетесь по shoes, который содержит у вас все товары.
    Может стоит использовать page_obj для этого?
    Ответ написан
    1 комментарий
  • Django - иерархическая структура данных в бд?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    реализовывать иерархические структуры данных ( совсем не понял и в гугле не нашел )

    А что тут искать - достаточно прочитать словарь русского языка, если уж термин непонятен - и включить голову - "у каждого сотрудника есть один начальник". ForeignKey модели на саму себя - и вперед...

    Как заполнить базу данных на 50 000 сотрудников

    И в чем сложности, сделать один цикл и создать 50000 рандомных сотрудников? Можно немного погуглить и найти готовые библиотеки - тот же faker

    api передавать иерархию сотрудников

    На вывод - можно деревом отдать. На ввод - просто указать айдишник начальника в соответствующем поле...

    это вообще тестовое задание на джуна без опыта

    Да - с этим вполне должен справляться джун без опыта.
    Если такие задания вводят в ступор - то пока рановато в программисты...
    Ответ написан
    Комментировать
  • Хватит ли бесплатной версии PyCharm для изучения и построения сайта на Django?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    А в чем проблема? Я первые проекты на Django делал в обычном текстовом редакторе.
    И сейчас часто простые легковесные проекты делаю в том же Sublime Text, когда лень маломощный ноут IDE грузить..
    Ответ написан
    2 комментария
  • Что используют в реальных проектах: Django или Django Rest Framework?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    По опыту - чаще идет разработка на Django Rest Framework. Чистый Django практически не используется. Потому что во-первых веб сейчас динамичный, - требуются частые обновления не перегружая всю страницу. Во вторых - часто требуются мобильные клиенты для работы с проектом, и в третьих - сам проект может обмениваться данными посредством АПИ со связанными проектами.
    Поэтому просто делается единый REST АПИ интерфейс, с которым уже общается и фронт, и мобильные клиенты, и внешние сервисы.
    Ответ написан
    Комментировать
  • Как выбрать сразу несколько статусов в django?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    Можно вспомнить что такое биты, И просто устанавливать/проверять соответствующие биты в числе.
    Ответ написан
    Комментировать
  • Как реализовать прелоадер в Django?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    Делаете прелоадер видимым на странице, скрываете кнопку отправки, вызываете ajax запрос с загрузкой данных. На успешный коллбек скрываете прелоадер и разблокируете кнопку отправки и выводите сообщение об успешном запросе. На неуспех - также скрываете прелоадер и разблокируете кнопку отправки и выводите сообщение о неуспешном запросе.
    Все это делается, естественно, - на javascript на стороне клиента.
    Ответ написан
    Комментировать
  • Подойдет ли Django для разработки интернет магазина?

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

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    Django flat pages если я правильно понял...
    Ответ написан
    Комментировать
  • Как запустить n кол-во сайтов в одном проекте?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Ответ написан
    Комментировать
  • Django ORM | Ошибка в применении SingletonModel?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    Вот неплохой пример реализации:
    Singleton Design Pattern Example

    В вашем примере например непонятно зачем так делать:
    class Meta(SingletonModel.Meta):
    Вы ж тогда и abstract = True для модели наследуете. А ведь конкретная модель у вас не абстрактна...

    зачем такая конструкция:
    self.__class__.objects.exclude(pk=self.id).delete()

    если по идее у вас все равно только одна запись в таблице...
    Ответ написан
    1 комментарий
  • Зачем используют Django и Python, разве не удобнее сразу все сделать через Node.js и javascript фреймворки?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Бекенд - это не язык. Это понимание соответствующих технологий работы с базами данных, кешированием, работы со структурами данных, протоколами, технологиями, алгоритмами, построением архитектуры и связыванием с внешними сервисами и прочее...
    А поскольку это охватывает очень большой пласт проблем - и произошла специализация.

    А Python разработчики имеют дело в основном только с бэкенд - и понятия про фронтенд у них будут на уровне dummy html, css, bootstrap.

    Угу... При таком подходе - с чего вы взяли тогда что у фронта будут достаточные знания о работе бекенда? Раз по-вашему бекендер только в dummy html может, - а фронтендер сразу с ходу сможет оптимизированные запросы к БД к примеру писать? )))) Если ваш фронтендер настолько крут - то в принципе незнание языка не помеха, поскольку язык - только инструмент.
    Ответ написан
    3 комментария
  • Как разделить get-запросы для получения всех объектов и конкретного в APIWiew?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    Для этого вьюсеты придумали :
    class FacultyViewSet(
        mixins.ListModelMixin,
        mixins.RetrieveModelMixin,
        GenericViewSet
    ):
        queryset = Faculty.objects.all()
        serializer_class = FacultySerializer
        permission_classes = (permissions.AllowAny, )

    Выведет и список, и детально, и без бойлерплейта приведенного у вас.
    Ответ написан
    Комментировать
  • Как в Django организовать индивидуальные настройки проекта, сменяемые через админку?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    Делаете синглтон модель - где настройки и храните. Меняете просто через админку.
    К примеру такую:
    class CachedSingletonModel(models.Model):
    
        class Meta:
            abstract = True
    
        def save(self, *args, **kwargs):
            self.pk = 1
            super().save(*args, **kwargs)
            self.set_cache()
    
        def delete(self, *args, **kwargs):
            ''' Bypass delete method '''
            pass
    
        def set_cache(self):
            cache.set(self.__class__.__name__, self)
    
        @classmethod
        def load(cls):
            if cache.get(cls.__name__) is None:
                obj, created = cls.objects.get_or_create(pk=1)
                if not created:
                    obj.set_cache()
            return cache.get(cls.__name__)
    
    
    # создаете свою модель настроек
    class Settings(CachedSingletonModel):
         ... определяете свои поля
         my_field = ...
    
    # используете
    mysettings = Settings.load()
    mysettings.my_field
    Ответ написан
    Комментировать
  • Как в вjango посредством middleware реализовать проверку на количество запросов за определенное количество времени?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    Да как - создаете middleware. В нем берете из заголовка запроса ip-адрес (для этого предварительно настраиваете ваш веб-сервер чтобы он добавлял нужный заголовок).
    Далее выполняете примерно такой код:

    count = cache.get_or_set(f'ip:{ip_address}', 0, <нужное количество секунд>) 
    count += 1
    if count > <допустимое количество попыток>:
         raise Exception('Давай, - до свидания')
    else:
         cache.set(f'ip:{ip_address}', count, <нужное количество секунд>)

    Ну а правильнее всего - реализовать эту логику на стороне веб-сервера. Он такое, как правило - умеет сам делать. И не нагружать дополнительной нагрузкой вашу миддлварь...
    Ответ написан
    3 комментария
  • Как заимствовать значение из одной модели в другую?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    1. Делаете миграцию с созданием storage_number (или как там ее назовете...) у модели Equipment
    2. Делаете миграцию с переносом данных поля из модели Storage в Equipment
    3. Делаете миграцию с удалением поля storage_number из модели Storage
    Все...

    Если переносить не надо - то в каждом объекте модели Equipment оно уже есть в поле .equipment_equipment. storage_number

    PS: А зачем имя модели дублировать в названии поля?
    Имя объекта типа equipment.equipment_client более читаемо чем equipment.client ?
    Ответ написан
    3 комментария
  • Как передать в icontains несколько значений django?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    services = Service.objects.filter(Q(title__icontains='мужская')&Q(title__icontains='стрижка'))
    Ответ написан
    Комментировать
  • Как из одной views передавать контекст на несколько темлейтов?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
  • Как получить поле по которому был найдет объект django?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    Немного непонятна конечная цель. Если просто глянуть на значение поля объекта - по какой-то причине нельзя - то можно в аннотированные поля добавить желаемое:

    .annotate(
        title_contains=Case(
            When(
               Q(title__icontains='test'),
               then=V('True')
            ),
           default=(V(False)),
           output_field=BooleanField()
        ),
        desc_contains=Case(
            When(
               Q(desc__icontains='test'),
               then=V('True')
            ),
           default=(V(False)),
           output_field=BooleanField()
        ),
    ...


    и в результате в полях title_contains, desc_contains, ...
    будет прилетать булевое значение - в каком соответствующем поле было найдено нужное соответствие

    for obj in result:
       print(obj.title_contains) # триггернулось ли по title
       print(obj.desc_contains) # триггернулось ли по desc
    Ответ написан
  • Как правильно подключать новое приложение?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    А чем не устраивает официальное описание? Далее мой вольный перевод:

    Чтобы сконфигурировать приложение, создайте модуль apps.py внутри приложения, затем определите тут класс - инстанс AppConfig.
    Когда INSTALLED_APPS содержит путь отделенный точками к модулю приложения, по умолчанию, если Django находит только один инстанс класса AppConfig в модуле apps.py, он использует эту конфигурацию для приложения. Это поведение можно отключить установкой AppConfig.default в False.

    Если модуль apps.py содержит более одного инстанса класса AppConfig, Django будет использовать тот, в котором AppConfig.default будет установлен в True.

    Если никаких инстансов AppConfig не будет найдено, будет использован базовый AppConfig.

    Как вариант, INSTALLED_APPS может содержать путь отделенный точками к классу, чтобы указать его явно:

    INSTALLED_APPS = [
        ...
        'polls.apps.PollsAppConfig',
        ...
    ]



    Сам Django использует по умолчанию путь до приложения:
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
    ...


    а не
    INSTALLED_APPS = [
        'django.contrib.admin.apps.AdminConfig',
        'django.contrib.auth.apps.AuthConfig',
    ...


    Поэтому если вам не нужно указывать по какой-то причине путь к инстансу AppConfig приложения явно - то можно ограничиться только путем к приложению.
    Ответ написан
    Комментировать