• Почему выскакивает ошибка при ajax запросе?

    @newpy
    web-dev
    Возвращаешь редирект, ожидаешь получить html... (dataType: html - означает что ты в ответ ждешь именно html). Получаешь редирект (код ответа сервера будет 304 вроде, а не 200), поэтому success и не выполняется скорей всего, выполняется error.

    Просмотрел, не тот код выкинул)))

    А еще совет грамотно формулировать вопросы, если хочешь получить ответы. А то из комментариев я так понял что и код не совсем тот выложен.

    я редирект сделал, что бы понять, выполняется ли код во вьюхе или нет

    Зачем тогда выкладываешь сюда такой код, которым ты что-то там проверяешь, и потом удивляешься что не работает?

    Для начала убрал бы свои CSRF токены и сделал бы нормальный, простой ajax запрос, с нормальным ответом от сервера, вместо редиректов. Добился бы выполнения success. Поэтапно добавлял свою логику, и проверил бы на каком этапе и после добавления чего получаешь не тот результат который ожидаешь. Заодно научишься искать свои ошибки. Это будет полезнее.
    Ответ написан
    Комментировать
  • Что делать с кодировками в python 3?

    @newpy
    web-dev
    видимо потому что в консоли не utf-8 кодировка. В виндовой консоли до win10 была вообще cp866, в win10 вроде стала win1251, стоило бы уточнить тогда уже какая система, та ли консоль. Потому что проблем с кодировками в python3 нет.

    у меня в win10 нормально все
    import os
    os.listdir()

    Выводит
    ... 'Searches', 'SendTo', 'Tracing', 'Videos', 'главное меню', 'Мои документы', 'Шаблоны' ..., 'GoL - копия.dat'
    Ответ написан
  • Можно ли послать массив через serialize()?

    @newpy
    web-dev
    Приведу пример, форма отправляется по нажатию на кнопку Submit
    Форма:
    <form id="form">
            <label>Name</label>
            <input type="text" name="name"/>
            <label>Age</label>
            <input type="text" name="age"/>
            <label>City</label>
            <input type="text" name="city"/>
            <button id="submit">Submit</button>
    </form>
    <pre id="debug">
          "This is test content. Learning AJAX."
    </pre>

    JavaScript
    $('#submit').on('click', function(e) {
                    e.preventDefault();
                    $.ajax({
                        url: 'search.php',
                        type: 'POST',
                        dataType: 'json',
                        data: $('#form').serialize(),
                    }).done(function (data) {
                        $('<h1>Ajax loaded</h1><div>' + data + '</div>').appendTo($('#debug'));
                    });
                });


    PHP:
    $name = $_POST['name'];
    $age = $_POST['age'];
    $city = $_POST['city'];
    
    $data = array('name' => $name, 'age' => $age, 'city' => $city);
    echo json_encode($data);
    Ответ написан
    Комментировать
  • Как получить не сортированный словарь?

    @newpy
    web-dev
    dictionary is an unordered set of key: value pairs
    что в переводе означает, что словари в питоне не гарантируют сохранение порядка (например в отличии от PHP). Так что вряд ли у вас словарь отсортирован по ключу. Кстати обратите внимание как у вас было, и как стало. Как раз порядок элементов поменялся ДО и ПОСЛЕ.
    Было:
    "APP": {
            "name": "Application name", 
            "description": "Application description", 
            "version": "1.0.0"

    Стало:
    "APP": {
            "description": "Application description", 
            "name": "Application name", 
            "version": "1.0.0"


    Как уже ответил sim3x и привел ссылки, то просто привожу пример оттуда же, в каком конкретно месте это написано как это сделать.

    >>> # regular unsorted dictionary
    >>> d = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}
    
    >>> # dictionary sorted by key
    >>> OrderedDict(sorted(d.items(), key=lambda t: t[0]))
    OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])
    
    >>> # dictionary sorted by value
    >>> OrderedDict(sorted(d.items(), key=lambda t: t[1]))
    OrderedDict([('pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)])
    
    >>> # dictionary sorted by length of the key string
    >>> OrderedDict(sorted(d.items(), key=lambda t: len(t[0])))
    OrderedDict([('pear', 1), ('apple', 4), ('orange', 2), ('banana', 3)])
    Ответ написан
    1 комментарий
  • Как изучаем Python?

    @newpy
    web-dev
    "A Byte of Python" ("Укус Питона") by Swaroop (перевод В. Смоляр)
    wombat.org.ua/AByteOfPython
    Ответ написан
    1 комментарий
  • PHP vs. all. Имеет ли смысл учить (параллельно) что-то еще?

    @newpy
    web-dev
    все языки хороши, каждый предназначен для своих целей...у всех свои минусы

    это и есть ответ на все ваши вопросы. Плюс зависит от стоящих перед вами конкретных задач.
    вы по-моему задали кучу вопросов, и сами же дали на них кучу ответов. Употребляете фразы "...да оно и понятно...". Так если все понятно, не тратьте время и пишите приложения.

    Если коротко и по-делу в сотый раз процитирую сотню-пять хороших советов: "...что нравится, то и изучайте...". Что касается всего остального, то у вас не получится изучать что-то одно. Хотите заниматься backend-ом, нет проблем, но у вас не получится стоять в стороне от современных технологий, и есть такое понятие как "стек" этих самых технологий. Не получится использовать что-то одно, один фреймворк, одну технологию.

    Про смерть PHP - глупости конечно. Про его минусы, можно уже смело процитировать вас же
    все языки хороши, каждый предназначен для своих целей

    Про Python и Django - я знаком и с тем и другим (PHP), могу писать на том и другом. Но лично мое субъективное ощущение что на Python мне писать приятнее. И нравится больше. И тут работает главный совет из начала, "на чем нравится на том и пишите", если это позволяет задача, и есть возможность выбирать. Просто если поступил заказ использовать PHP, то что вы откажетесь от денег и заказа и будете сидеть пока не прилетит волшебник с заказом на python+Django?

    Про скорость работы языка: я думаю, вам рановато думать о скорости работы того или иного языка. Если вы только прям сейчас не пишете свой фейсбук, например. К слову, например Instagram написан на Python и вроде не испытывает недостатка в нагрузке, и вполне работает. Все остальное вполне справляется со своими задачами.

    Про скорость работы (просто скорость работы): Django даже позиционируется как фреймворк "для перфекционистов с дедлайнами", что гласит даже заглавная страница фреймворка, т.е. позволяет вести разработку быстро. К слову тоже самое можно делать и с помощью того же Laravel. Если хочется "по-взрослому": то чаще всего это Symfony. Но в большинстве случаев нет смысла писать небольшие сайты на Симфони. Не потому что Симфони там плох, а потому что это можно сделать быстрее. А в коммерческой разработке, бытует мнение, что главный критерий для клиента сейчас -это скорость разработки.
    Если проект крупный, то там сроки тоже поставлены, но они довольно большие, и там чаще всего и используют Симфони.
    Опять же Django при этом подходит как для небольших проектов, так и для очень больших.
    Если вам нужно разработать API, то там чаще всего используют другие инструменты, которых много как со стороны PHP, так и со стороны Python. Различные микрофреймворки в качестве backend-а.

    Подводя итог, вы можете заметить, пару ключевых тезисов:
    1. Зависит от конкретной задачи, которая перед вами стоит, или требование клиента(руководства компании)
    2. Если есть возможность выбирать, если это позволит вам получить конечный результат, то выбирайте то, что вам по душе. Кому-то Python "не лезет", кому-то PHP.

    Хотелось закончить на веселой ноте =), поэтому скажу так: при всем вышесказанном, чаще всего, всех этих людей объединяет одно: "так или иначе все они используют JavaScript"
    :D
    Ответ написан
    7 комментариев
  • Как сделать вывод более правильный на php?

    @newpy
    web-dev
    В том контексте в котором используете в примере вы, т.е. description или "описание", константой задавать может и не совсем уместно.

    Простой пример:
    уместно:
    define ("PI", "3.14");
    тут вы задаете константу числа Пи, например с точностью до нужного вам знака. Это неизменяемые данные. Хороший повод для константы.
    уместно:
    define ("BMW_M52B20_ENGINE", 2.0);  // Двигатель БМВ модификации М52B20 имеет объем 2.0 литра

    в данном случае тоже уместно, т.к. двигатели М52B20 от БМВ, имеют объем 2 литра, они сходили с конвейера именно с таким кодом и таким объемом. И уже ничто это не изменит. Удобно использовать как константу для быстрого доступа.

    Продолжая тему автомобилей теперь пример с массивом:
    $bmwE36 = array (
    'year' => '1996',
    'color' => 'deepblue',
    'engine' => BMW_M52B20_ENGINE,
    'type' => 'sedan',
    );

    В данном случае описываем машину и задаем с помощью массива, машина имеет набор свойств, причем машины выпускались разные, могли иметь разный цвет, год выпуска, тип (универсал, седан, хэтбэк), двигатель.
    В данном случае как раз двигатель я задал константой из примера выше. Логично было бы например типы автомобиля (универсал, седан, хэтчбэк и купе), например тоже задать константами. Т.к. это постоянные данные, и их немного. Предположим я привел три - соответственно, можно было бы задать три константы и и задать им количество дверей. У седана их как правило 4 двери, у купе - 2(или 3), у универсала как правило - 5.
    define ("SEDAN", 4);
    define ("CUPE", 3);
    define ("UNIVERSAL", 5);

    тогда наш массив можем задать еще и так:
    $bmwE36 = array (
    'year' => '1996',
    'color' => 'deepblue',
    'engine' => BMW_M52B20_ENGINE,
    'type' => SEDAN,
    );

    При желании вы можете изменить свойства автомобиля, просто получив доступ к элементам массива. Можете отсортировать свойства, можете выделить только нужные и потом их использовать как-то.
    Ответ написан
  • Sublime text 3 на Windows 10?

    @newpy
    web-dev
    1. Попробуй посмотри в Default settings и в User settings параметр ignored packages.
    2. View > Show Console или Ctrl + ` И попробуй запустить или что-то сделать, в консоли увидишь "лог", и где именно заваливается package или plugin. В общем ошибку.
    3. Посмотри вот здесь: https://packagecontrol.io/docs/troubleshooting#Win...
    если по-русски, то там говорится о том, что ST3 package control использует WinNet C++ API для веб-запросов, и поэтому конфигурация зависит от Internet Explorer которого больше нет, что сделать написано в описании ошибки Errno 12029
    Ответ написан
    Комментировать
  • Почему выходит [pdoexception] sqlstate[hy000] [2002] no such file or directory в Laravel 5?

    @newpy
    web-dev
    проверить в .env DB_HOST заменить на 127.0.0.1, возможно mysql создает сокет в /var/run/mysql/mysql.sock
    php.ini тогда так:
    mysql.default_socket = /var/run/mysqld/mysqld.sock
    mysqli.default_socket = /var/run/mysqld/mysqld.sock
    pdo_mysql.default_socket = /var/run/mysqld/mysqld.sock

    Или как узнать сокет:
    $ mysql -uroot -p
    mysql> show variables like '%sock%';

    покажет путь сокета, останется прописать в php.ini
    Ответ написан
    1 комментарий
  • Как разобратся с MVC?

    @newpy
    web-dev
    В представлении AR
    Model = Таблица
    экземпляр Model = запись из таблицы,
    что мешает получать записи по одной в цикле из нужной таблицы и записывать в массив. На выходе получается массив или коллекция. Собственно современные ORM это и делают.

    Например получение всех записей из таблицы категорий (модель Categories) в большинстве современных фреймворков выглядит примерно так:

    $categories = Categories::all()

    На выходе в переменной $categories получаем коллекцию (по сути массив каждый элемент которого является объектом модели Categories):

    Collection {#168 ▼
      #items: array:5 [▼
        0 => Categories {#169 ▶}
        1 => Categories {#170 ▶}
        2 => Categories {#171 ▶}
        3 => Categories {#172 ▶}
        4 => Categories {#173 ▶}
      ]
    }


    Вы можете пробежаться по этому массиву и получить нужную запись. Никаких проблем.

    Утрированно:

    Controller - управляет.

    Если это Посты, то ими надо управлять, действовать. Методы (actions, действия) работы с Постами, например create, delete, update, edit. Логично было бы предположить что для управления Постами нужен PostsController.

    Комментарии - свой набор действий (action) логично предположить что для них следовало бы сделать отдельный контроллер CommentsController, который содержал бы логику управления только Комментариями, а не всем на свете(например Пользователями). Вы всегда будете знать что Комментариями управляет CommentsController, Постами - PostsController. Более того, если кто-то другой откроет ваш код, то он сделает логичное предположение, что за Посты у вас отвечает PostsController и начнет работать/ломать оттуда.

    Не зацикливайтесь сильно на теории. Пишите код, и чаще выводите var_dump()-ом промежуточные результаты, вы будете видеть как устроено данные, и начнете понимать как к ним подобраться.

    Создайте объект класса (Модели), сделайте запрос, выведите дампом и посмотрите как устроены данные. Вы наглядно увидите объект это или массив, или ни то, ни другое, ни третье )).
    Ответ написан
    Комментировать
  • PHP + MySQL, лучшая книга/лучший ресурс для изучения?

    @newpy
    web-dev
    могу посоветовать еще Люк Веллинг и Лора Томпсон "Разработка веб-приложений с помощью PHP и MySQL". Единственное надо найти последнее издание (скорее всего на текущий момент это 4-е издание). И в книге ввиду года издания 2010, рассматриваются примеры и объясняются на примерах с использованием старых версий PHP и MySQL. Но концептуально это ни на что не влияет. Основополагающие принципы там изложены исключительно понятно, подробно и хорошо. Мне в свое время очень помогла.
    Ответ написан
    Комментировать