• Как проверить уникальность поля Django и показать на форме?

    WStanley
    @WStanley
    Back-end Developer
    В модели надо сделать поле уникальным unique=True
    Тогда форма будет возвращать ошибку "такая запись уже есть"
    ссылка на доку
    Ответ написан
    Комментировать
  • Django система комментариев?

    WStanley
    @WStanley
    Back-end Developer
    Трям!
    В form.post надо передавать пост на который оставили коммент, а ты все посты передаешь и id поста надо передавать с формы
    from django.core.exceptions import ObjectDoesNotExist
    
    def home(request):
       if request.method == 'POST':
          id = request.POST.get('id', None)
          if id:
             try:
                post = Post.objects.get(pk=id)
             except ObjectDoesNotExist:
                return () # обработка ошибки пост не найден
             if form.is_valid():
                form = form.save(commit=False)
                form.user = request.user
                form.post = post 
                form.save()
                return () # все хорошо, коммент сохранен
             return () # обработка ошибки форма не валидная
          return () # обработка ошибки id не передан
       # else здесь не обязательно писать код выполнится только если не ПОСТ
       context = {
          'form': CommentForm(),
          'comments': Comment.objects.filter(moderation=True)
       }
       return (request, 'blog/index.html', context) # return метод GET

    По сути надо также посмотреть на CommentForm и Trace ошибки
    Я нашел лишь одну ошибку, надеюсь поможет

    И все комменты наверное через all надо получать
    comments = Comment.objects.all()
    Либо так
    comments = Comment.objects.filter(moderation=True)

    Так же юзера лучше получать вот так:
    from django.contrib.auth import get_user_model
    User = get_user_model()

    И прописывать имя приложения перед точкой pep8
    from name_app.models import Post, Comment # после запятой пробел
    Ответ написан
    1 комментарий
  • Как мне решить задачу?

    WStanley
    @WStanley
    Back-end Developer
    Трям!
    Сначала пишем запрос который суммирует нам все QUANTITY по полю ORDERID
    SELECT ORDERID, SUM(QUANTITY) AS QUANTITY FROM [ORDERDETAILS] GROUP BY ORDERID

    Теперь нам надо выбрать те записи в которых QUANTITY > 200 следовательно надо обернуть наш запрос и добавить условие
    SELECT
        TABLE_SUM_QNT.ORDERID
    ,   TABLE_SUM_QNT.QUANTITY
    FROM
        (
            SELECT
                ORDERID
            ,   SUM(QUANTITY)   AS  QUANTITY
            FROM
                [ORDERDETAILS]
            GROUP BY
                ORDERID
        )   AS  TABLE_SUM_QNT
    WHERE
        TABLE_SUM_QNT.QUANTITY >   200
    Ответ написан
    Комментировать
  • Как вернуть url из модели в шаблон?

    WStanley
    @WStanley
    Back-end Developer
    Ты передаешь slug в product_list, но делаешь это без уважения и не принимаешь его
    ссылка на доку
    ссылка на доку 2 (пример)
    path('  тут принять slug  ', views.ProductView.as_view(), name='product_list'),]
    Ответ написан
  • Платежи на Django. Как реализовать?

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

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


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

    WStanley
    @WStanley
    Back-end Developer
    Доброго!
    Оценок у одной книги может быть несколько, жанров как я понял тоже, вот строки и задваиваются, чтобы увидеть это просто уберите группиворку и выполните запрос. Это поможет понять что происходит. А лучше уберите группировку и по очереди джойните таблицы анализируя результат, все станет понятно.

    Если на пальцах объяснять то к каждому id книги будут прикреплены все оценки этой книги
    book | rating
    ---------------
     1   |    4
     1   |    5

    Если вы джойните еще одну таблицу то картина будет примерно такой
    book | rating | gename
    ----------------------
      1   |  4    |  g1
      1   |  4    |  g2
      1   |  5    |  g1
      1   |  5    |  g2

    Соответственно после группировок у вас:
    book | rating | gename
    ----------------------
      1   |  4.5    |  g1, g2, g1, g2

    А чтоб решить проблему используйте GROUP_CONCAT_DISTINCT
    Он исключит повторяющиеся значения
    book | rating | gename
    ----------------------
      1   |  4.5    |  g1, g2

    p.s. В любой непонятной ситуации убирай группировку
    Ответ написан
    1 комментарий
  • Почему не работает slick-slider?

    WStanley
    @WStanley
    Back-end Developer
    Думаю ваша ошибка не связана со slick слайдером, а не работает он потому как у вас слайда 4 а slidesToShow = 3
    Сделайте скажем 6-8 слайдов а slidesToShow поставьте сколько их должно быть на экране

    И надо наверное дождаться пока DOM построиться
    $(document).ready(function(){
      $('.your-class').slick({
        setting-name: setting-value
      });
    });

    Также у слика отличная документация https://kenwheeler.github.io/slick/
    Ответ написан
    1 комментарий
  • На WordPress плагине уменьшить длину меню?

    WStanley
    @WStanley
    Back-end Developer
    Как вариант, добавь в файл css
    #nav #mega-menu-wrap-main-nav {
        width: 1200px;
        margin: 0 auto;
    }

    Либо в поле "кастомное оформление" у плагина, должно сработать
    И также советую вам пройти бесплатный курс по HTML и CSS от html academy
    Ответ написан
  • Как подключить yandex/google geolocation с определёнными настройками?

    WStanley
    @WStanley
    Back-end Developer
    Для этого надо воспользоваться АПИ яндекса например
    https://tech.yandex.ru/maps/jsapi/doc/2.1/dg/conce...

    По средствам АПИ получаешь город, спрашиваешь пользователя: ваш город? не ваш?
    если ответ нет, то получаешь по АПИ все регионы и города и предлагаешь выбрать другой
    Задача лишь в том чтобы запрограммировать 2 модальных окна с вопросом и выбором.

    вот здесь еще ответы есть GeoIp — как определить город посетителя?
    Ответ написан
  • Как продолжить выборку?

    WStanley
    @WStanley
    Back-end Developer
    Трям!
    Джойны не так страшны как кажутся, тут главное практика.
    SELECT
        USERS.LOGIN
    ,   NEWS.TITLE
    ,   NEWS.TEXT
    FROM
        USERS
    LEFT OUTER JOIN
        COMMENTS
    ON
        USERS.ID    =   COMMENTS.USER_ID
    RIGHT OUTER JOIN
        NEWS
    ON
        USERS.ID    =   NEWS.USER_ID
    GROUP BY
        NEWS.TITLE
    ,   NEWS.TEXT
    ,   USERS.LOGIN
    HAVING
        (COUNT(COMMENTS.ID) >   1)

    p.s. Чтобы научиться писать запросы надо писать запросы.
    Ответ написан
  • Как импорировать модуль pyqt5?

    WStanley
    @WStanley
    Back-end Developer
    1. Возможно вы его установили в виртуальное окружение, но не активировали его(виртуальное окружение)
    2. Проверьте какой интерпритатор выбран в pycharme python3, python2.7, либо выбрано виртуальное окружение.
    3. Проверьте куда вы его поставили pip freeze, pip3 freeze, либо надо активировать виртуальное окружение и там pip freeze (зависит от того, что и как и на какой системе у вас установлено)

    Соответственно - нужно библиотеку поставить для выбранного интерпритатора, либо выбрать интерпритатор который видит вашу библиотеку

    PendiPiper,
    В линуксе например уже стоит python2.7 соответственно пакетный менеджер у него pip.
    python -V  # проверить версию питона2
    sudo apt install python-pip # установить пакетный менеджер
    pip install name_package  # установка библиотеки для python2
    pip freeze # просмотреть установленные библиотеки

    Если вы дополнительно установили python3 то пакетный менеджер у него pip3.
    python3 -V # проверить версию питона3
    sudo apt install python3-pip # установить пакетный менеджер
    pip3 install name_package # установка библиотеки для python3
    pip3 freeze # просмотреть установленные библиотеки

    При установки виртуального окружения вы можете указать какой питон будет в виртуальном окружении использоваться, например:
    virtualenv -p python3 my_venv
    virtualenv -p python my_venv

    После установки виртуального окружения вам надо его активировать
    source my_venv/bin/activate # в линуксе
    source my_venv/Scripts/activate # в виндовсе

    После активации окружения можете проверить версию питона в виртуальном окружении
    python -V
    После этого вы устанавливаете в виртуальное окружение нужные вам библиотеки
    pip install name_package # установить библиотеки
    pip freeze # просмотреть установленные библиотеки
    # только при активированном виртуальном окружении

    и работаете с ними только при активированном виртуальном окружении. Внешние интерпритаторы python и python3 не увидят их и наоборот.
    Соответственно в pyCharm(и другой IDE) требуется выбрать интерпритатор с которым вы работаете.

    В случае если у вас Windows ситуация похожая, но есть нюансы..
    Ответ написан
    3 комментария
  • Не работает alert, почему?

    WStanley
    @WStanley
    Back-end Developer
    В массивах индексы убери
    ['Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Вс']

    Либо объект
    let obj = {
       'ru': {1:'Пн', 2:'Вт', 3:'Ср', 4:'Чт', 5:'Пт', 6:'Сб', 7:'Вс'},
       'en': {1:'Mon', 2:'Tues', 3:'Wedn', 4:'Thur', 5: 'Fri', 6:'Sutur', 7:'Sun'}
    }
    console.log(obj["en"][1])
    Ответ написан
  • Объясните как отправить данные с формы, и подключиться к API?

    WStanley
    @WStanley
    Back-end Developer
    Воспользоваться jquery например ссылка
    Собрать данные с формы
    let data = new FormData();
    data.append('name', $('#name').val())
    ...

    По событию формы
    $('.formClass').submit(function( event ) {
      event.preventDefault();
      # Нажатие кнопки submit
      # formClass - класс формы
    });

    Отправить их
    $.ajax({
        url: 'url',  # url куда отправляем
        headers: {  },  # Заголовки
        type: 'POST',  # Метод отправики
        data: data,  # Данные отправки с формы
        beforeSend: function () {
            # Действия перед отправкой
        },
        success: function (response) {
            # Действия в случае удачного ответа
        },
        error: function (response) {
            # Действия если ошибка
         }
     });

    Еще не плохо бы провести валидацию формы, но это уже совсем другая история
    Ответ написан
    Комментировать
  • Как сделать ввод максимального числа в поле input но не меньше минимального значения с помощью jq?

    WStanley
    @WStanley
    Back-end Developer
    Ну к примеру можно так!
    Сыроват конечно пример, но все же. Дальше сами доработаете.
    <input type="text" id="min" placeholder="min">
    <input type="text" id="max" placeholder="max">
    <p class="text"></p>


    $('#max').change(function(){
    	let min = parseInt($('#min').val())
      let max = parseInt($('#max').val())
    	if (max < min) {
      	$('.text').html('введите число больше минимума')
            $('#max').val('')
      } else {
      	$('.text').html('пойдет!')
      }
    })
    Ответ написан
    Комментировать
  • Разница между сайтом "блог" и "новостным" сайтом?

    WStanley
    @WStanley
    Back-end Developer
    В чем отличие между сайтом "блог" и "новостным" сайтом, в техническом плане?

    В целом разницы нет.

    Какие модули, библиотеки используются для создания сайта новостей в Django?

    Именно те модули и библиотеки которые нужны для создания конкретного сайта новостей

    Какие модули, библиотеки используются для создания сайта блог в Django?

    Именно те модули и библиотеки которые нужны для создания конкретного сайта блога

    За googlи! - гуглил четкого ответа нет!

    Гугл четкого ответа не даст, т.к. технически это одно и тоже, зависит от конкретной задачи

    Зачем Django когда есть Wordpress - ответ: потому что Python!

    Согласен!
    Ответ написан
  • Чем отличается понятие CMS от скрипта?

    WStanley
    @WStanley
    Back-end Developer
    Трям!
    Скрипт - это общее понятие, т.е. на языке программирования можно написать скрипт. Например ты написал скрипт расчета площади по входным параметрам на Javascript. Ссылка на википедию
    CMS - это система управления контентом т.е. это совокупность скриптов на разных языках программирования выполняющих определенные действия. Ссылка на википедию
    Ответ написан
    Комментировать
  • Проблема с позиционированием объектов в HTML, Что делать?

    WStanley
    @WStanley
    Back-end Developer
    Под картинкой они позиционируются потому как div и p по умолчанию блочные элементы(display:block) они растягиваются на всю ширину https://html5book.ru/block-inline-elements/. Если я вас правильно понял..
    Ответ написан
    Комментировать