• В чем разница групп с правами и булевыми полями юзера?

    Стандартные разрешения в django привязаны к CRUD-операциям, и даже без R: create, update и delete. Таким образом, эти операции определяют доступ к конкретным категориям объектов.

    Флаги is_active, is_staff и is_superuser имеют более общий смысл: они определяют статус пользователя, его положение в системе. Если not is_active, никакие выданные пользователю permissions не применяются. Если is_superuser, то они не имеют никакого значения - у пользователя есть все permissions, которые в системе есть, и даже те, которых нет (has_perm() возвращает всегда True).

    Наконец, is_staff определяет доступ к админке и, таким образом, указывает, можешь ли ты в рамках админки использовать те permissions, что тебе назначены.

    Таким образом, перечисленные флаги являются не аналогом permissions, а ортогональны им, регулируя применение уже имеющихся permissions.
    Ответ написан
    Комментировать
  • В чем разница групп с правами и булевыми полями юзера?

    mututunus
    @mututunus
    Backend developer (Python, Golang)
    is_superuser - имеет права на создание/редактирование/удаление всех объектов, is_staff - имеет только явно выданные права.
    Ответ написан
    Комментировать
  • Почему возникает ошибка 'style' of undefined Js?

    @AlexeyPikalov
    Если у тебя запуск скрипта стоит в начале html страницы, то попробуй перенести запуск скрипта на место перед закрывающимся тегом body
    Ответ написан
    2 комментария
  • Как управлять воспроизведением видео по скроллу?

    @zkrvndm
    Софт для автоматизации
    Отслеживайте координаты текущей прокрутки и по нужному условию меняйте src у вашего видео.
    Ответ написан
    Комментировать
  • Какие теги кошернее: em или i, strong или b?

    EM предназначен для интонационного ударения. В английской традиции такие места выделяются курсивом. В русском языке так делать не принято, а интонационное ударение выделяется контекстом, построением предложения. Следовательно, для вёрстки русских текстов этот тег неуместен.

    STRONG предназначен для смыслового выделения. А всё остальное (из перечисленного), по-моему, от лукавого.

    В HTML 4 эта разница, как мне кажется, подразумевается, но выражена криво. Зато в HTML 5 очень чётко: stress emphasis (оцените примеры!) и strong importance.
    Ответ написан
    2 комментария
  • Какие теги кошернее: em или i, strong или b?

    apangin
    @apangin
    В W3C спецификации теги EM и STRONG вынесены в раздел Структурированный текст -> Элементы фраз.
        EM: Indicates emphasis.
        STRONG: Indicates stronger emphasis.
    Внешний вид, как будут отображаться элементы фраз, определяется браузером. Эти теги могут учитываться, например, Text-to-Speech движками для изменения интонации или громкости голоса.

    В то же время B и I относятся к разделу Форматирование -> Шрифты и дают явное указание браузеру, каким шрифтом отрисовывать фрагмент.
        I: Renders as italic text style.
        B: Renders as bold text style.
    Ответ написан
    Комментировать
  • Как правильно использовать db_index?

    @dooMoob
    1) Да, но возможно не просто тупые индексы
    2) Только в случае если True << False или наоборот, иначе вы просто не получите особого выигрыша. И то индекс нужно добавлять на реже встечающееся значение, т.е.
    CREATE INDEX ON task(is_on) WHERE is_on = TRUE
    3) Нет, т.к. планировщик скорее всего выберет сортировку результата
    4) Чем уникальнее значение, по которому выполняется поиск, тем индекс будет уместнее
    5) Добавить индекс нужно по полю status
    Ответ написан
    Комментировать
  • Можно ли работать с PythonAnywhere через свою консоль?

    vabka
    @vabka
    Токсичный шарпист
    В бесплатной версии нельзя.
    В платной версии можно подключиться по ssh.
    Также в платной версии есть поддержка Jupyter Notebooks
    Ответ написан
    1 комментарий
  • Как изменить название картинки, которое Django даёт ей по умолчанию при загрузке через ImageField?

    @brightcow
    Можно напись функцию подобную этой и ссылаться на нее, она формирует путь и название файла

    def get_path_file(instance, filename):
        category = instance.category.name
        name = instance.name
        return os.path.join('products_images', category, name[:25], filename)
    
    cover = models.ImageField(upload_to=get_path_file, null=False)
    Ответ написан
    4 комментария
  • Нужно ли добавлять миграции Django в .gitignore?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Миграции - это часть кодовой базы, исключать их не надо. Выполняться они должны при каждом развёртывании.
    Ответ написан
    Комментировать
  • Как развернуть Django с помощью нативной поддержки Python в ISPmanager?

    Iron_Butterfly
    @Iron_Butterfly
    Вы настроили окружение Python для сайта по документации ispmanager. После этого, в док директории сайта в файл requirements.txt прописываете строчку django и через меню сайта по трем точкам справа делаете Pip install.
    Cпойлер: requirements.txt можно редактировать через меню Файлы конфигурации сайта. Называется Конфигурационный файл Python.
    Затем идете в shell в док директорию сайта и запускаете команды

    source .venv/bin/activate
    django-admin startproject django_project .


    Сразу же можно найти файл settings.py и в ALLOWED_HOST прописать домен и ip по типу:

    ALLOWED_HOST = ['hostname', 'xxx.xxx.xxx.xxx']

    Изменяем настройки обработчика как на скрине

    6499066c692cc851263060.png

    Нужно поставить в режим Порт и рядом с runserver написать порт, который выпал ниже.

    Перезапускаем Python по трехточечному меню сайта справа. Убеждаемся что перезапуск прошел успешно и идем по адресу сайта. Видим джанговский экран "Hello World!" по типу:

    649906f8c13e5521666116.png

    Дальше развлекаемся с django как хотим.

    Для дебага: в каталоге пользователя (например /var/www/www-root/data/.pm2/logs/) хранятся логи сайтов на Python и Node.js. Там есть error и просто out логи, которые из панели посмотреть можно через файловый менеджер.

    Проблема может возникнуть на CentOS7 из-за версии sqlite3. Ошибка будет вида
    django.db.utils.NotSupportedError: deterministic=True requires SQLite 3.8.3 or higher

    Для временного обхода проблемы есть несколько вариантов:

    1. Понизить версию django
    pip install Django==2.1.*

    2. Использовать в проекте pysqlite3-wheels (работает 3.8, 3.9, 3.10, 3.11)
    pip install pysqlite3-wheels django
    vim ./.venv/lib64/python3.8/site-packages/django/db/backends/sqlite3/base.py
    # from sqlite3 import dbapi2 as Database
    from pysqlite3 import dbapi2 as Database
    Ответ написан
    Комментировать