Ответы пользователя по тегу Django
  • Nginx на https -> Django на runserver -> DRF + swagger. Как заставить swagger ходить на https, а не на http?

    @776166 Автор вопроса
    Разобрался.

    В settings.py
    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTOCOL', 'https')


    В nginx
    proxy_set_header        X-Forwarded-Protocol  $scheme;


    Проблема была в том, что в интернете пишут неточно, а помимо копипасты ещё надо иногда думать.
    Ответ написан
  • Как отправить email пользователю?

    @776166
    Всё так.
    Кроме
    EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

    Который отправляет почту прямиком в консоль (https://docs.djangoproject.com/en/2.2/topics/email... а не пользователю.
    Ответ написан
  • Где найти views для базового шаблона в Django?

    @776166
    0) В базовый, не в базовый (наследующий базовый), это не важно. Важно то, как именно передать в шаблон. В базовый шаблон никакой контекст не передаётся. Базовый шаблон просто расширяет ваш шаблон, а контект там один.

    1) В вашем случае НЕОБХОДИМО использовать штатный request.user и не парить себе мозг (https://docs.djangoproject.com/en/2.2/ref/request-...
    Будет что-то типа {{ request.user.profile.get_absolute_url }}

    UPD: Я не сразу углядел. У вас отедльная моделька для профиля, привязанная к пользователю.
    Надо сделать в модели свойство, которое будет отдавать профиль для этого пользователя. Если сможете, то вопрос решен и будет работать как в примере выше. Если нет, то проще всего добавить context processor и отдавать переменную profile. Работать будет как-то так: {{ profile.get_absolute_url }}. Но лучше всего, конечно, определить в модели User свойство profile.

    2) Если штатный request.user не подходит (почему!?), или вы хотите понять принцип на будущее, то есть два похожих варианта:
    2.1) Передавать ваш объект в контекст конкретного шаблона из вьюхи. Будет работать только в этой вьюхе. Банально, да?
    2.2) Написать context processor и добавить его в settings.TEMPLATES.OPTIONS.context_processors (см то, как это сделано в базовом settings.py и гугли примеры). Будет работать вообще везде в рамках рендера шаблонов. Мы не ищем лёгких путей для request.user!

    Вадим Шаталов предлагает использовать фильтры/тэги. Это не совсем то (не совсем об этом), потому что в них всё равно надо будет или передавать request.user, или брать из контекста, куда его надо будет помещать одним из вышеописанных способов, или как-то его нечеловеческим образом откуда-то доставать, чего делать уже совсем не нужно.
    Ответ написан
  • Как грамотно прописать urlpatterns в django?

    @776166
    Так статика не подключается идеологически и особенно так, как это сделали вы.
    "./" означает, что вы отталкиваетесь от текущего расположения, что уже совсем вообще ну никак неправильно.

    Нужно так:
    {% load static %}
    <script src="{% static "js/jquery-1.11.3.min.js" %}"></script>

    https://docs.djangoproject.com/en/2.2/howto/static...
    Ответ написан
  • Не отображается страница?

    @776166
    Возможно, дело в отсутствующем '/':
    path('/', views.cart_detail, name='cart_detail'),
    но это не точно
    Ответ написан
  • Как подключить CSS (хотя бы один файлик) в django?

    @776166
    А
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, "static"),
        '/что-тотам/vitalik/static/',

    в settings.py есть и правильный?

    https://docs.djangoproject.com/en/2.1/howto/static...
    Ответ написан
  • Как запомнить переменную на другой странице?

    @776166
    Как вариант, можно наджаваскриптить id'шники, передать на следующую страницу и там распарсить.
    Ответ написан
  • Django. Как скрыть ненужные поля в форме в зависимости от выбранной категории?

    @776166
    Варианов два: на фронте и на бэке.
    На фронте надо jsкриптить. На бэке можно сделать вьюху, в которую при изменении будет аякситься форма или целиком перезагружать страницу, перерасчитывая форму и возвращать её обратно.
    Ответ написан
  • Можно ли учить Django без знаний Python?

    @776166
    TL;DR:
    1) В конечном счёте, всё равно всё решит практика. Как в любом программировании.
    2) Научиться можно, но сложно и долго. И всё равно другого пути не будет.

    Если у вас будет готовый, работающий проект django, в рамках которого надо будет решать простенькие задачи, то будет проще.
    Если вы программировали до этого, то будет проще, но не сильно, и время это особо не сократит.
    Ещё очень пригодятся навыки системного администрирования, потому что там ещё экосистема быть должна.
    Т.е. по-хорошему, надо уметь и nginx+uwsgi|etc настроить, потому что вы же не будете в продакшене держать runserver 0.0.0.0:8000 без сертификатов https, да? И саму экосистему использовать, ведь вы же не собираетесь делать проекты БЕЗ виртуальное окружение, да? И базу данных подключить, потому что вы же не будете в продакшене пользоваться SQLight, да? Было бы неплохо знать хотя бы sh, а ещё лучше ansible, ну или хотя бы разобраться в каком-нибудь heroku, если вы — ленивая задница, потому что вы же не собираетесь deploy руками делать, да? На самом деле, всё это не обязательно, кроме виртуального окружения. Остальное могут сделать devops, но вы становитесь командозависимым и не понимаете технологий, с которыми работаете. А это плохо и по-началу существенно снижает вашу ценность.

    Django — прекрасный фреймворк на прекрасном языке, но у него есть порог вхождения, и он немаленький. Python всё равно надо будет изучать, хотя гугления проблемных мест и документации будет достаточно, ибо бизнес-логика обычно более-менее простая, хотя без умения программировать всё равно никуда, не все задачи покрываются батарейками. Но простой сайт сделать действительно можно. Как только почувствуете, что начинает получаться, идеально найти лёгкую подработку/стажировку начинающего Джуниора. Идеально, прямо устроиться работать хотя бы за еду и набираться опыта, который потом всё решит.

    И самое главное запомни, сынок: DRF — это сложный BOSS, к прохождению которого надо предварительно готовиться и без прокачки он не проходится, а проходить его скорее всего придётся.
    Ответ написан
  • Как правильнее всего сделать вложенную форму в Django 2?

    @776166
    Ну как бы это разные вещи.
    Если вам в процессе создания объекта нужна новая категория, то вы сначала добавляете её, потом обновляете форму объекта и едете дальше.
    Технически это можно сделать по-разному. Например, после создания категории перееаяксить поле с категориями. Или перезагрузить форму целиком, но там свои ньюансы.
    Как костыль можно добавить поля с новыми категориями прямо в форму создания объекта и при сабмите обрабатывать. Но я бы не стал так делать.
    Ответ написан
  • Как создать клиент для сервера django?

    @776166
    Это сложно. :(
    По-хорошему, вам надо бы использовать DRF, но он к чертям взрывает мозги неподготовленным. Там очень много всего и слишком большая вариативность. Но можно и ручками это сделать, но там дофига тонкостей. Например, авторизация, которая тоже взорвёт вам мозг, если делать её руками. API по-сути, это просто определённые запросы к серверу, на которые он даёт даёт ответы. Обычно в JSON или частями кода (это удобно для форм). С другой стороны, освоение DRF обязательно. Всё равно придётся. Чем раньше, тем лучше.
    Вторая проблема — необходимость изучать какие-то фреймворки для фротнтенда, хотя, по-началу можно и ручками с jQuery поковыряться.

    В можете реализовать задачу примерно таким образом: Берёте любую страницу и по частям переносите её функционал с рендера сервером, на рендер из данных на клиенте. Запрашиваете у севрера по API данные, он их вам отдаёт, вы их рендерите JS. Будет трудно. Я сочувствую.
    Если ваши модели хорошие, то вам не составит большого труда прикрутить более-менее полноценное API.
    Но вообще, задача довольно сложная. Там и проектировать надо и API реализовывать.
    Ответ написан
  • Чат на чистом Django?

    @776166
    Лучшe не надо. Попробуйте websockets.

    1) Рабочий пример чатика https://github.com/sushma-goutam/ws-chat
    2) Поднимаете в контексте проекта django и интегрируете его туда, получая всё, что хотите в любых формах и количествах. (https://toster.ru/q/618375)
    3) Profit.
    Ответ написан
  • Как использовать модели Django в своих скриптах?

    @776166
    В общем, сверху ответили. Можно пользоваться командами. Это классно и удобно. Есть батарейка для cron.
    А если это совсем внешний скрипт или что-то проектно-сайтовое, но связанное, например, какой-нибудь чат или бот, то надо импортировать окружение django и лучше, что бы он крутился в виртуальном окружении проекта.

    Сам импорт выглядит как-то так:
    import sys, os
    import django
    sys.path.append('/path/to/settings/py/')
    os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
    django.setup()


    https://docs.djangoproject.com/en/2.1/topics/setti...
    Ответ написан
  • Неправильно работает Django?

    @776166
    Подключать статику надо только через {% static "[путь до файла]" %}

    Судя по вашим комментариям в обсуждении, у вас или плохо проект спланирован в плане статики, или вы её неправильно подключаете. Относительные пути с ../ лучше вообще не использовать.

    Скорее всего, правильный путь должен быть таким: /static/posts/js/jquery-3.3.1.min.js да?
    Ответ написан
  • Как добавить произвольные данные в контекст для шаблона в django-cms для штатной страницы?

    @776166 Автор вопроса
    Решено. Надо было переспать ночь, перечитать и осмыслить документацию, в которой всё есть.
    Делается на основе плагина.

    def render(self, context, instance, placeholder):
        context.update({'instance': instance})
        return context


    Вот в этот context.update({'instance': instance}) и можно засунуть, что угодно.
    Ответ написан