Ответы пользователя по тегу Django
  • Почему не отображает форму в Django?

    @immaculate
    Программист-путешественник
    Не скорее всего, а совершенно точно не выполняется условие:
    {% if latest_twits %}
    Потому что такая переменная в шаблон не передается вообще.

    И честно говоря, код выгляди просто ужасно. Django 1.8 давно устарел, нынешняя LTS версия 2.2. И даже для 1.8 код написан плохо. Ведь давно существуют хорошие руководства по Django, чем же вы пользуетесь, когда пишете такой код? Если перейти на Class Based Views, то код станет короче и понятнее. Да даже с функциями код обработки форм уже 10 лет как минимум пишется намного проще:

    form = SomeForm(request.POST or None)
    if form.is_valid():
        return redirect('index')
    return render(form)


    И формы лучше не рендерить вручную в шаблоне, а использовать пакет django-crispy-forms.
    Ответ написан
    Комментировать
  • Ошибка при добавлении комментария?

    @immaculate
    Программист-путешественник
    Вопрос явно неполный без кода CommentForm. Либо в ней, либо во view надо заполнять все поля, которые требуются в модели (hint: post - обязательное поле в модели Comment).
    Ответ написан
    Комментировать
  • Как исправить ошибку already exists при load data?

    @immaculate
    Программист-путешественник
    Подозреваю, но не уверен, что у вас при создании модели User автоматически создается UserProfile по сигналу. Вообще, создание профиля таким образом устарело уже лет 5-6 как. Давно надо переходить на использование собственной модели пользователя, в которую и добавлять недостающие поля.
    Ответ написан
  • Как вывести объекты с помощью Query Set?

    @immaculate
    Программист-путешественник
    class ProbableCar(models.Model):
        user = models.ForeignKey(settings.USER_MODEL, on_delete=models.CASCADE)
        cid = models.ForeignKey('Car', on_delete=models.CASCADE)
    Ответ написан
    Комментировать
  • Вывод формы в Django?

    @immaculate
    Программист-путешественник
    Вам надо использовать: django-crispy-forms.
    Ответ написан
    Комментировать
  • Переадресация в django?

    @immaculate
    Программист-путешественник
    Правильно использовать ни то, ни другое, а django.shortcuts.redirect.
    Ответ написан
    1 комментарий
  • Зачем в Path прописывать имя маршрута?

    @immaculate
    Программист-путешественник
    Для того, чтобы в шаблонах и коде прописывать url по имени, а не явно:
    return reverse('dashboard-index') вместо return '/dashboard/index/'.

    Преимущество в том, что код с именами намного проще поддерживать и изменять.
    Ответ написан
    3 комментария
  • Django и маршрутизация без указания явного url?

    @immaculate
    Программист-путешественник
    Такая мини CMS уже встроена в Django, называется Flatpages. Можно посмотреть как она устроена — там очень простой код.

    А еще лучше использовать Wagtail, на сегодняший день — это лучшая CMS для Django.
    Ответ написан
    Комментировать
  • Как написать CreateView для модели с ForeignKey?

    @immaculate
    Программист-путешественник
    Во-первых, соблюдайте, пожалуйста PEP-8 и Django Coding Style. Это уважение к тем, кому приходится читать ваш код. Также, обратите внимание, что обычно модели называются в единственном числе: City, а не Cities. Country, а не Countries.

    Во-вторых, при данном использовании CreateView форма создается автоматически. Вам же нужна своя форма, которая будет назначать страну. Создайте форму для City, в конструкторе которой будет сохраняться Country из запроса. А в CreateView вместо атрибута fields используйте form_class для использования вашей формы.
    Ответ написан
    7 комментариев
  • Требования к Django разработчику(Стек технологий)?

    @immaculate
    Программист-путешественник
    Как говорится, на вопрос невозможно дать однозначный ответ. Большинство проектов, с которыми я работал в последние 3-4 года используют:

    Обязательно
    1) Python/Django
    2) PostgreSQL в качестве бд в 99% случаев (в оставшихся 1% MySQL)
    3) Django REST Framework

    Необязательно
    1) ElasticSearch (как напрямую, так и через django-haystack)
    2) Redis
    3) Celery

    Этот список можно продолжать до бесконечности, конечно. Думаю, надо хорошо изучить основы Python, Django (начинать с официальной документации, а не блогов всяких самоучек, дающих плохие примеры, в рунете таких много). Остальное придет по мере наработки практики.
    Ответ написан
    4 комментария
  • Какой skeleton выбрать?

    @immaculate
    Программист-путешественник
    Я использую каждый раз нечто похожее на то, как структурирован данный проект: https://github.com/taigaio/taiga-back/tree/master/taiga

    И не соглашусь с предыдущими комментаторами: то, как Django организует проект, хорошо лишь для маленьких проектов. Когда проект начинает расти, структура по умолчанию начинает мешать.
    Ответ написан
  • Настройка ubuntu 16.04 lts для Django. Что нужно чтобы сайт был доступен не только в локальной сети?

    @immaculate
    Программист-путешественник
    Скорее всего, дело в том, что вы сидите за NAT провайдера. Для демонстрации сайта клиентам проще всего использовать ngrok.
    Ответ написан
    Комментировать
  • Django как инициализировать поля формы в зависимости от группы пользователя?

    @immaculate
    Программист-путешественник
    Необходимо копать в таком направлении:

    class UpdateView(FormView):
         def get_form_kwargs(self):
            kwargs = super().get_form_kwargs()
            kwargs['user'] = self.request.user
            return kwargs
    
    class UpdateForm(forms.Form):
        def __init__(self, *args, **kwargs):
            user = kwargs.pop('user')
            super().__init__(*args, **kwargs)
            if not user.groups.filter(name='managers').exists():
                self.fields['secret'].disabled = True
    Ответ написан
    Комментировать
  • Групповое редактирование итемов на одной странице?

    @immaculate
    Программист-путешественник
    Вам надо использовать Django Formsets.
    Ответ написан
    1 комментарий
  • Отображать поле в зависимости от статуса пользователя, как?

    @immaculate
    Программист-путешественник
    Встроенная функциональность Django такого точно не поддерживает. Надо писать собственный view для админки, в котором и проверять наличие нужного разрешения.
    Ответ написан
    Комментировать
  • Как создать два вида пользователей на сайте Django?

    @immaculate
    Программист-путешественник
    Можно просто создать две группы: seller и buyer. При регистрации добавлять пользователя в соответствующую группу. Создать/назначить группам нужные разрешения или использовать django-rules. Во вьюшках проверять есть ли нужные разрешения.
    Ответ написан
    Комментировать
  • Как сделать обработку события в Django Template?

    @immaculate
    Программист-путешественник
    Если вы серьезно задаете вопрос (спрашиваю, потому что он тривиальный, как комментаторы раньше указали), то имейте в виду, что ссылки генерируют GET запрос. GET запросы не должны изменять состояние приложения (по массе причин, например, потому что ссылку может предварительно загрузить браузер, или расширение браузера, или поисковая машина).

    Поэтому если действительно нужна ссылка, то надо создать форму с методом POST, и при нажатии ссылки отправлять именно эту форму (например, при помощи javascript).
    Ответ написан
    Комментировать
  • Почему не работает сортировка результатов поиска в django-haystack?

    @immaculate
    Программист-путешественник
    Haystack возвращает объекты из поискового индекса, а не из базы. В том порядке, в котором их вернул используемый бэкенд поиска (например, ElasticSearch). Применяйте order_by к результатам поиска. index_queryset вообще используется только в момент полной индексации. Читайте документацию по пакетам, которые применяете, там такие простые моменты точно рассмотрены.

    У вас вообще, с кодом много проблем. Например, это:
    return u'{title}'.format(title=self.__unicode__())
    эквивалентно:
    return self.__unicode__()
    или
    return unicode(self)

    Только последние два варианта читаются проще, и вообще, непонятно, зачем такие сложности. Это из разряда вместо a = 1 писать setattr(__builtin__, 'a', 1).
    Ответ написан
  • Django orm - сохранение в связанные таблицы?

    @immaculate
    Программист-путешественник
    В 2018 году в Django разносить данные пользователя по двум раздельным таблицам User и Profile — категорически неправильно! Django уже года 4 как минимум позволяет создать собственную модель User со всеми необходимыми полями. Такой код будет намного проще писать и поддерживать, а еще исчезнет вагон и маленькая тележка JOIN'ов, необходимых для догрузки Profile.

    А по сути вопроса: до сохранения экземпляра модели в базе, создавать связанные модели нельзя, так как Django необходимо знать первичный ключ User для их создания, а он генерируется в процессе сохранения модели.

    Есть пакет, позволяющий обойти это ограничение: django-modelcluster, но в вашем случае целесообразнее переписать модель пользователя.
    Ответ написан
    Комментировать
  • Как сделать добавление в корзину из общего каталога?

    @immaculate
    Программист-путешественник
    Информации недостаточно для ответа. В частности, не приведен код формы.

    А вообще, у вас колоссальные проблемы с кодом. Мешанина из function-based и class-based views. Каша с `id` и `slug` — обычно и то и другое поле уникальны, и достаточно использовать одно — либо `id`, либо `slug`.

    Нарушения PEP-8, в частности, в коде Python традиционно принято, что названия классов начинаются с большой буквы и используют CamelCase вместо подчеркивания.

    Иметь отдельный класс на каждый отдельный бренд и категорию — это тоже очень плохо. Это куча дублирующегося кода, который практически ничем не отличается. Правильнее передавать категорию в параметрах и иметь один класс для различных категорий и брендов.
    Ответ написан