• Как создавать методы с декоратором динамически в Python?

    @cython
    Декоратор - функция, в которую передаётся другая функция, в результате чего образуется новая функция. Следовательно мы можем просто вызвать декоратор с функцией как аргументом:
    langs = ('en', 'ru')
    
    
    for lang in langs:
    	setattr(self, f"{func.__name__}_list", list_route(
    		methods=self.methods,
    		url_path=lang,
    		permission_classes=self.permissions
    	)(lambda x: get_translated_objects(x, lang)))
    
    	setattr(self, f"{func.__name__}_detail", detail_route(
    		methods=self.methods,
    		url_path=lang,
    		permission_classes=self.permissions
    	)(lambda x: get_translated_objects(x.get_object(), lang)))
    Ответ написан
    Комментировать
  • Как создавать методы с декоратором динамически в Python?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    f = detail_route(methods=methods, url_path=lang, permission_classes=permissions)(func)
    setattr(self, func.__name__, f)
    Ответ написан
    Комментировать
  • Подключение платежных систем к Джанго, выбор сервиса?

    @boss_lexa
    по Django именно не подскажу, только по сервисам
    1) яндекс касса
    карты+киви+яндекс apple pay и google pay
    обязательно подключите apple pay и google pay - уже давно все пользуются (у яндекса для браузера - легкое подключение)
    https://kassa.yandex.ru/developers/using-api/using-sdks есть SDK для Python

    2) paypal
    отдельно подключать надо напрямую через регистрацию на PayPal
    Ответ написан
    2 комментария
  • Django_filters ошибка “QuizFilter has no len()”?

    ArsenyMatytsyn
    @ArsenyMatytsyn
    Руководитель frontend направления, предприниматель
    QuizFilter это запрос, при выводе в шаблоны это игнорируется, в ЯП тебе необходимо преобразовать полученные данные в список. Вот тут есть разбор.

    PS: это вопрос не столько Django, сколько обмена данными между ЯП и базами данных. В том же Flask с такой проблемой можно при отсутствии знаний столкнуться на раз. Да и продолбившись в глаза и со знанием дела тоже можно.
    Ответ написан
    Комментировать
  • Куда в Django вставлять кастомные методы в моделях?

    @Realmixer
    Full stack Python (Django) web-developer
    Правило простое: если метод производит действия над группой экземпляров, то помещаем его в менеджер, а если над одним экземпляром, то в модель.

    И ещё на счёт increase_views — не советую так делать. Если в одно время случится два вызова, то значение увеличится не на два, а лишь на единицу. Значение нужно увеличивать на стороне БД — благодаря транзакционности будут учтены оба вызова. На Django ORM это выглядит так:
    from django.db.models import F
    
    class Quiz(models.Model):
        ...
        def increase_views(self):
            self.__class__.objects.filter(pk=self.pk).update(views=F('views') + 1)
    Ответ написан
    Комментировать
  • Django Rest Framework, TypeError: __init__() takes 1 positional argument but 2 were given. Почему происходит?

    @Realmixer
    Full stack Python (Django) web-developer
    Ошибка в urls.py, неправильно прописан класс отображения — не хватает вызова метода as_view. Надо так:
    urlpatterns = [
        path('quiz/bookmark/create-remove/<slug:slug>/', views.CreateRemoveBookmarkAPI.as_view(),
            name="bookmark-create-remove-api"),
    ]
    Ответ написан
    Комментировать
  • Не могу обратиться к полю в модели в шаблоне Django?

    Wondermarin
    @Wondermarin
    Один из вариантов:
    views.py:
    ...
    bookmarks = Bookmark.all()
    context['bookmarks'] = bookmarks
    ...


    ваш шаблон:
    <span class="quiz__bookmarks ml-3">
                {% for bookmark in bookmarks %}
                    {% if user in bookmark.user %}
                      <i class="fas fa-star bookmarked-star"></i>
                    {% else %}
                      <i class="far fa-star"></i>
                    {% endif %}
                {% endfor %}
                {{ quiz.get_bookmarks_count }}
    </span>


    Ну или же вы можете проверять это во views.py.
    Ответ написан
    2 комментария
  • Почему .parentNode underfined?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    let btn = $(this);
    $ - jquery,
    this - HTMLElement,
    $(this) - объект jquery.

    У объекта jquery нет свойства parentNode. У него есть метод parent().
    parentNode есть у HTMLElement.

    remove(), который вам советуют, есть и там и там, но лучше вам понимать что вы делаете, чем полагаться на удачные совпадения.
    Ответ написан
    Комментировать
  • Django + Ajax. DRF или нет?

    kgb_zor
    @kgb_zor
    I need your traceback.
    Для единичных случаев можно использовать вашу конструкцию.
    Ответ написан
    Комментировать
  • Django + Ajax. DRF или нет?

    @deliro
    Можно и так. DRF — это как раз замена "что-то типа" на более высокоуровневые абстракции. Когда "что-то типа" становится слишком много по коду и это "что-то типа" становится почти копипастой кода по соседству — вот тогда DRF и нужен. А для одного раза можно и оставить "что-то типа".
    Ответ написан
    1 комментарий
  • Платежи на Django. Как реализовать?

    Dante449
    @Dante449
    Изучаю Python
    Ответ написан
    Комментировать
  • Платежи на Django. Как реализовать?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Как и к сайту на любом другом языке/фреймворке, подключаешь платёжный аггрегатор или банковский эквайринг.
    Ответ написан
    Комментировать
  • Платежи на Django. Как реализовать?

    WStanley
    @WStanley
    Back-end Developer
    Доброго!
    Ну если в общах чертах то происходит это так:
    На сайте надо создать корзину, чтоб пользователь мог собрать воедино то что он хочет купить.
    При переходе в корзину у него должна быть кнопка "оформить заказ" при этом можно дать выбрать ему способ доставки, ввести свой адрес и остальные требуемые вещи.
    Далее варианта 2:
    Первый простой:
    • Регистрируетесь в интернет кошельке например(яндекс, вебмани и тд) получаете свой уникальный номер кошелька
    • в этом кошельке есть пример куда и как отправлять данные об оплате
    • вы просто реализуете выполнение этих инстукций по нажатию кнопки "оформить заказ"
    • после оплаты сайт-кошелек перенаправит пользователя обратно(обратная ссылка указывается в настройках) вам на сайт где вы его уведомите об удачной оплате и пожелаете хорошего дня!

    Второй сложный:
    • Ваш заказчик заключает договор с банком "рога и копыта"
    • В банке также будет инструкция по правилам которой вы будете отправлять данные об оплате заказа
    • скорее всего еще будут спец ключи(сертификаты) для идентификации клиета(в инструкции будет описано)
    • Так же заказчику придется прикупить кассовый аппарат
    • после оплаты банк перенаправит пользователя обратно(обратная ссылка указывается в настройках) вам на сайт где вы его уведомите об удачной оплате и пожелаете хорошего дня!


    Подробнее не получится ибо у всех систем свои нюансы, но они описаны в инструкциях, чаще всего в разделе "для разработчикоф"
    Данные придется отправлять методом POST, на сайте надо будет организовать https, но это не точно!
    Ответ написан
    Комментировать