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

    @immaculate
    Программист-путешественник
    Зависит от ваших требований. Существует более одного способа сделать это.

    Если вы создаете пользователей сами (не используя django-allauth и подобные библиотеки), в одном view, то достаточно выполнять действие в этом view.

    В противном случае можно либо переопределять метод save вашего класса пользователя (надеюсь, вы не используете идиотский костыль со встроенным классом Django django.contrib.auth.models.Users и связанным с ним Profile, а используете свою модель пользователя), либо использовать сигнал, например, post_save.

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

    @immaculate
    Программист-путешественник
    Здесь нет никакого «правильного» подхода. Изучать фреймворк можно параллельно с изучением того, как работают «голые» сайты. Это совершенно не противоречащие друг-другу вещи и нет никакой необходимости делать это в определенном порядке. Фреймворк основан на тех же самых принципах, просто он позволяет не писать заново банальные и одинаковые вещи для каждого сайта.

    У того же Django код достаточно простой в большинстве случаев, в PyCharm можно прыгать по методам и смотреть реализацию.

    Вообще, рекомендую читать хорошую документацию и книги. Судя по вопросам на тостере, большинство сейчас изучает методом копипасты. Создают базовый проект, а потом добавляют в него функциональность копи-пастя нагугленные примеры, в случае ошибок бегут сюда задавать примитивные вопросы, ответы на которые есть даже в Django Tutorial.

    Как минимум документацию по Django (Django Tutorial, затем все остальное) рекомендую прочитать от корки до корки. И не один раз, потому что с первого раза многое будет непонятно и забудется.
    Ответ написан
    Комментировать
  • Как правильно сделать json response dict?

    @immaculate
    Программист-путешественник
    Во-первых, что у вас за serializers.serialize. Откуда этот метод или функция, и что она делает?
    Во-вторых, workimage_set.all — это метод. Подозреваю, вы хотели его вызвать, для этого надо в конце написать скобки. Иначе конструкция не имеет смысла — это попытка сериализовать метод, а не результат его работы.
    В-третьих, вам видимо пора переходить на использование Django Rest Framework. Это правильнее и удобнее, чем сериализовать все вручную.
    Ответ написан
    6 комментариев
  • Генерация PDF в django?

    @immaculate
    Программист-путешественник
    Везде где можно, отказался от ручной генерации PDF. Делаю аккуратные стили, а генерация PDF уже средствами браузера (печать в PDF, или сразу печать, минуя PDF-вариант). Там где нужен не именно PDF, а просто представление для печати, лучше использовать такой подход.
    Ответ написан
    Комментировать
  • Почему возникает ошибка при миграции БД в Django 1.11.2 после клонирования с Github?

    @immaculate
    Программист-путешественник
    Ошибка в миграциях где-то. Ответить на вопрос из озвученных исходных данных невозможно. Можно только видя весь код и базу, используя команды showmigrations, migrate --fake-initial, migrate, migrate --fake попытаться решить ситуацию.
    Ответ написан
    21 комментарий
  • Django есть ли готовая батарейка для мультизагрузки и сортировки загруженных фоток?

    @immaculate
    Программист-путешественник
    Я недавно такое сделал при помощи сервиса Filestack, а сортировку при помощи Sortable.js. Filestack - сервис дорогой, но требование мне поставил заказчик, он выбрал Filestack, он его и оплачивает. Sortable.js выбрал, потому что мне показалось самым простым решением. Готовых батареек не нашел, интеграцию с Filestack и Sortable.js писал сам, но это оказалось несложно.
    Ответ написан
  • Как передать в stringio данные stdout?

    @immaculate
    Программист-путешественник
    import subprocess
    data = subprocess.check_output('dumpdata')
    print(data)
    Ответ написан
    Комментировать
  • Как исправить ошибку при расширения Django User Model?

    @immaculate
    Программист-путешественник
    Не надо делать один-к-одному уже лет 7-8. Django позволяет использовать свою модель пользователя черт знает с какого времени, откуда до сих пор берутся эти идеи о том, что надо делать профиили ерез один-к-одному в 2017 году?... Это надо было в первых версиях Django в 2006-2007, тогда другого способа не существовало.

    Если вы нашли это на каком-то сайте в сети, пожалуйста, напишите автору, чтобы исправил информацию. Потому что регулярно здесь возникают подобные вопросы из-за того что люди не разобравшись начинают городить эти костыли и стреляют себе в ноги.
    Ответ написан
    4 комментария
  • Как связать объект user с другим объектом во время его сохранения?

    @immaculate
    Программист-путешественник
    1. В модели django.contrib.auth.models.User уже есть поля first_name и last_name - дополнительные копии не принесут ясности, наоборот, рано или поздно в базе образуется бардак и будет непонятно, где настоящие имя и фамилия, и вообще неясен смысл такой денормализации
    2. Непонятно, зачем вам метод save_user — он ничего не делает и абсолютно не нужен
    3. Правильнее назвать поле user вместо username
    4. Теоретически (зависит от ваших требований) правильнее создавать свою модель пользователя и ссылаться на нее как settings.AUTH_USER_MODEL
    5. В определении полей с null=True, blank=True не нужен default — по умолчанию и так будет None
    6. Странная модель, в которой все поля могут быть NULL - скорее это от непонимания
    7. Для ваших целей правильнее использовать django.views.generic.edit.CreateView, django.views.generic.edit.UpdateView, и код будет короче, и даже форму можно не определять
    8. В redirect написана какая-то дичь!
    9. При использовании настроек по умолчанию, все view и так защищены от CSRF, нет необходимости явно писать декоратор csrf_protect

    А в общем и целом, вам надо начать хотя бы с прочитения Django Tutorial. Вы явно пишете код не понимая, что пишете и зачем. Отсюда и проблемы.
    Ответ написан
    Комментировать
  • Почему django закрывает соединение раньше времени?

    @immaculate
    Программист-путешественник
    Вообще-то, Django никогда не обрабатывает запросы в одиночку. Перед ним еще стоят gunicorn/uwsgi/mod_wsgi и nginx или Apache. Кроме того, прямо в документации описаны ограничения на размер запроса.

    Ну и еще бы неплохо приводить код и текст ошибки в таких вопросах.
    Ответ написан
    5 комментариев
  • Как сделать каталог с большим уровнем вложенности категорий?

    @immaculate
    Программист-путешественник
    Можно использовать django-treebeard или django-mptt
    dajngopackages вам в помощь
    Ответ написан
    Комментировать
  • Проблемы с фильтром?

    @immaculate
    Программист-путешественник
    Вместо
    queryset.filter(brand__country__slug=request.GET.get('country'))


    Надо писать:
    queryset = queryset.filter(brand__country__slug=request.GET.get('country'))
    Ответ написан
    1 комментарий
  • Где-то словил ошибку, и сейчас не могу обращаться через {%static...%} в файлы статики?

    @immaculate
    Программист-путешественник
    Вот этого в коде быть не должно. Если вы прочитаете документацию, то увидите, что в режиме отладки эта строка не нужна.
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)


    А вот эту строку желательно бы обернуть в if settings.DEBUG:, так как на production она не нужна.
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)


    Вместо этого:
    {% load static %}
    {% load staticfiles %}


    официальная документация говорит писать:
    {% load static from staticfiles %}

    Пользователь в шаблонах доступен как user, писать request.user необязательно, и это тоже описано в документации.

    Вообще, не замечаю ошибки, проверьте, что файл у вас реально находится по заданному местоположению. И читайте документацию, более подробной документации, чем у Django нигде не видел. Там есть ответы на все вопросы, причем очень понятные и подробные.
    Ответ написан
    Комментировать
  • Social-auth-app-django выдает ошибку на ./manage.py migrate Что я не так делаю?

    @immaculate
    Программист-путешественник
    На странице этого пакета прямо написано:
    As for Dec 03 2016, this library is now deprecated


    Там же написано, как мигрировать:
    https://github.com/omab/python-social-auth/blob/ma...

    Я бы взял django-allauth.
    Ответ написан
    Комментировать
  • Не получается сделать миграцию Django-Social-Auth, в чем проблема?

    @immaculate
    Программист-путешественник
    Можно еще использовать django-allauth. Простой и надежный комбайн, который решает все вопросы авторизации.
    Ответ написан
    Комментировать
  • Как изменить значение selected?

    @immaculate
    Программист-путешественник
    Я бы сказал, что здесь не конкретный шаблон надо менять, а весь подход. Писать такой HTML руками — неправильно. Это тяжело пишется, тяжело читается и еще тяжелее модифицируется.

    Правильно использовать django.forms.Form или django.forms.ModelForm и пусть выводится автоматически средствами того же Django (form.as_p, form.as_ul) или django-crispy-forms.
    Ответ написан
    1 комментарий
  • А какой есть аналог Spring webflow в Django?

    @immaculate
    Программист-путешественник
    До версии 1.8 в Django была встроенная функциональность Form Wizard, которая, кажется, реализовывала подобное. Затем она была выделена из Django в отдельный проект https://github.com/django/django-formtools/
    Ответ написан
    Комментировать
  • Best practies? Две независимые модели для пользователя и админа, Django 1.11.x?

    @immaculate
    Программист-путешественник
    Я не раз видел попытки такого разделения пользователей по классам в проектах на Django. Не знаю, почему все сразу выбирают такое решение, которое в перспективе не приносит ничего, кроме боли.

    Проще всего пойти стандартным путем: унаследовать пользователя от django.contrib.auth.models.AbstractUser, а различие между пользователями определять либо по группе/разрешениям, либо добавить поле в свою модель типа is_moderator. Это будет во много раз (на порядок точно) проще реализовать и поддерживать, будет совместимость со всем стандартным кодом Django и сторонними библиотеками, любому просто войти в проект и внести изменения.

    Разделение на две разных модели никаких абсолютно преимуществ не дает, кроме тонны мусорного кода и головняков с поддержкой данной гидры.

    TLDR:
    1) Из вашего вопроса остается неясным, почему требуется разделение по разным классам. Это самый безумный вариант для разграничения полномочий, и в Django разделение полномочий пользователей уже предусмотрено по умолчанию
    2) Поддерживал пару проектов с разными классами для разных классов пользователей. Поверьте, это просто ужас-ужас в поддержке, а самое главное, что он ничем не оправдан.
    Ответ написан
  • Как сделать всплывающие окно редактирование записи в django?

    @immaculate
    Программист-путешественник
    Вариантов масса. Если используется bootstrap и форм немного, например, то в шаблоне форму запихиваем в bootstrap modal, и все.

    Если форм много и/или они очень тяжелые, то делаем отдельный view, который возвращает только html с формой, без оформления. По клику показываем окно bootstrap modal, в которое посредством XMLHttpRequest загружаем форму.

    Если используется какой-нибудь фреймворк типа React на фронтенде, то можем реализовать редактирование через использование Django Rest Framework.

    В общем, можно реализовать множеством способов, в зависимости от предпочтений и требований.
    Ответ написан
    3 комментария