• Что делать со всеми миграциями?

    Если больше нигде кроме вашего компьютера нет миграций, а на продакшн вы будете заливать уже готовый проект, то можно смело избавиться от миграций.
    Миграции чаще всего нужны когда проект работает на продакшене, в это время ведётся разработка на тестовом сервере и у пары-тройки разработчиков. Кто-то один меняет модель и нужно чтобы у остальных тоже всё работало как надо. Тут-то и пригождаются миграции. Все просто загрузят миграции, мигрируют и продолжат работать.
    Ответ написан
    2 комментария
  • Что делать со всеми миграциями?

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

    Astrohas
    @Astrohas
    Python/Django Developer
    У ModelAdmin есть свойство change_form_template . Укажите в нем файл шаблона для модели
    Ответ написан
    4 комментария
  • Как модифицировать шаблон в Django, не затрагивая верстки по умолчанию?

    Assargin
    @Assargin
    Перед ответом смотрю наличие ✔ в ваших вопросах
    1) Как это исчезает? В отнаследованном шаблоне всё остаётся как и есть в шаблоне-предке.
    Т.е., если создать шаблон в проекте, и написать в нём лишь
    {% extends 'admin/base_site.html' %}
    то это будет, по сути, тот же самый шаблон.
    Приведу пример из своего проекта, по нему вы сможете сориентироваться. Можно переопределять блоки, расширяя их (добавляя то, что нужно), или даже убирая контент из них.
    Пример шаблона
    {% extends 'admin/base_site.html' %}
    
    {% load js_storage %}
    {% load admin_static %}
    {% load i18n %}
    {% load pipeline %}
    
    
    {% block extrastyle %}
        {{ block.super }}
        {% stylesheet 'Jcrop' %}
        {% stylesheet 'admin-core' %}
    {% endblock %}
    
    {% block extrahead %}
        {{ block.super }}
        {% js_storage_out %}
    {% endblock %}
    
    {# Из заголовка удалили конкретную для страницы крошку, оставив только site_title #}
    {% block title %}{{ site_title|default:_('Django site admin') }}{% endblock %}
    
    {# Добавили логотип #}
    {% block branding %}
        <img src="{% static "images/logo_50.png" %}" class="logo" />
        {{ block.super }}
    {% endblock %}
    
    {# Убрали приветствие пользователя #}
    {% block welcome-msg %}
    {% endblock %}
    
    {# Убрали ссылку View Site #}
    {% block userlinks %}
        {% if user.is_active and user.is_staff %}
            {% url 'django-admindocs-docroot' as docsroot %}
            {% if docsroot %}
                <a href="{{ docsroot }}">{% trans 'Documentation' %}</a> /
            {% endif %}
        {% endif %}
        {% if user.has_usable_password %}
        <a href="{% url 'admin:password_change' %}">{% trans 'Change password' %}</a> /
        {% endif %}
        <a href="{% url 'admin:logout' %}">{% trans 'Log out' %}</a>
    {% endblock %}
    
    {% block footer %}
        {{ block.super }}
        {% javascript 'jquery-mousewheel' %}
        {% javascript 'js-cookie' %}
        {% javascript 'Jcrop' %}
        {% javascript 'plupload' %}
        {% javascript 'admin-core' %}
    {% endblock %}

    2) Кастомизировать шаблоны админки для конкретной модели можно, переопределяя их в папке шаблонов проекта. Например, если у меня есть приложение users, в нём есть модель user, и для неё мне нужно кастомизировать шаблон списка объектов, то я создаю файл templates/admin/users/user/change_list.html и делаю там, что мне нужно
    Пример переопределения шаблона админки для модели
    {% extends 'admin/change_list.html' %}
    
    {% block extrahead %}
        {{ block.super }}
        <script type="text/javascript">
            var url = js_storage.url_users_user_show_user_password;
            (function($) {
                $(document).ready(function($) {
                    $('#result_list td.field-rawpassword').click(function(event){
                        var $target = $(event.currentTarget);
                        var user_id = $target.closest('tr').find('td.action-checkbox input[type=checkbox]').val()
                        if(!$target.data('shown')){
                            $.get(url, {user_id: user_id}, function(data, status, xhr){
                                $target.html('<span style="font-family: Monospace">' + data.raw_password + '</span>');
                                $target.data('shown', true);
                            });
                        }
                    });
                });
            })(django.jQuery);
        </script>
    {% endblock %}

    Ответ написан
    6 комментариев
  • Как выжить джуну единственным разработчиком на проекте?

    Astrohas
    @Astrohas
    Python/Django Developer
    Я как-то работал при аналогичных условиях. Возможно даже хуже. 1 делом, наплевал на на защиту их системы и работы других прогеров. Я та был осторожен, и все что относилось ко мне оберегал бекапами, гитом, системой деплоя и тд. А в это же время мои сотоварищи писали код прямиком из notepad через мать его Samba. Samba же открыта и без пароля и доступна по вафле. У вафли пароль 12345678.

    Просто плюньте на работу остальных. Делайте свои проекты как вам удобно. У вас есть доступ к полигону, где вы как раз таки имеете возможность саморазвития. Настройте гит флоу, систему деплоя, всякие юни-тесты. Попросите маркерную доску или лист A3 и замутите Agile для себя и девушки. Почувствуйте себя лидером ©
    Ответ написан
    6 комментариев
  • Как сделать Парсинг Амазона используя LXML+REQUESTS и прокси?

    Revencu
    @Revencu Автор вопроса
    так и не работает код при повторном использовании того же IP (получаю каптчу на Амазоне)
    session=requests.Session()
    session.cookies.clear()
    session.keep_alive = False
    session.headers = {'Connection':'close', 'User-Agent': agent}                         #agent - random
    page=session.get(url, proxies={'http':'http://'+IP}, timeout=(60,60))             # IP - rotation
    session.cookies.clear()
    Ответ написан
    1 комментарий
  • Как проверить уникальность данных в полях ForeignKey?

    Astrohas
    @Astrohas
    Python/Django Developer
    делайте m2m и не изобретайте велосипеды.
    class Team(model.Model):
        ...
       players  = models.ManyToManyField(Player)

    В Админке делаете filter_horizontal
    Ответ написан
    6 комментариев
  • Как работает это замыкание (по книге Лутца)?

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

    @McBernar
    1. Перестать ее раздавать, а начать продавать. 150 тысяч установок — внушительная цифра, показывающая интерес.

    2. Оказывать платную поддержку пользователей — доработка функционала по запросу.

    3. Для частного использования продолжать отдавать бесплатно, а для коммерческого только за деньги.

    4. Раздавать две версии. Лайт и Про. Бесплатная и платная, соответственно.

    5. Ввести подписку на использование за совсем небольшую плату. Отдать 100 рублей раз в месяц значительно проще, нежели полторы тысячи сразу. И неважно, что в итоге можно переплатить сильно больше.

    Но это все пальцем в небо. Вы бы проект свой показали, что ли. Разве это такая тайна?
    Ответ написан
    Комментировать
  • Java или .NET - выбор с перспективой (не холивар)?

    @strannik_k
    Учите структуры данных, алгоритмы, ООП. Пригодится, хотя бы для прохождения собеседований. Ну и выбранный стек технологий.

    Почему Java или .NET?
    Если в энтерпрайз собираетесь идти, то посмотрите какие там требования сейчас на джуниора. В среднем требуют пару лет опыта работы на позицию джуниора и знания десятка технологий в данном стеке. Причем в каждой конторе стек разный. Конечно, можно в какую-нибудь слабенькую фирму устроиться туда поначалу, но и зарплаты будут пониже да и скорость роста медленней.
    Если вы не очень одаренный человек, то лучше искать работу в областях помоложе: IOS, Android, Node.js. Зарплаты там не хуже, а требования ниже. Также советую выбирать узкоспециализированное направление, например не все вместе (базы данных + серверная часть, IOS, Android), а только разработку серверной части, либо IOS, либо Android. Идти туда, где один разработчик должен уметь писать и под IOS и под Android - не стоит, т.к. и требований больше при той же зарплате и потом будет сложней сменить работу (будете знать 2 направления на среднем уровне, вместо одного, но на хорошем).

    Порекомендую ознакомиться:
    1. megamozg.ru/post/10348 (про ошибку 3)
    2. megamozg.ru/company/dataart/blog/17084, megamozg.ru/company/dataart/blog/15904, habrahabr.ru/company/dataart/blog/234003 - для сравнения сложности трудоустройства в одну и ту же фирму в разных направлениях.
    Ответ написан
    Комментировать
  • К чему готовиться при переходе с back enda на front end?

    @Fetur
    В карман за ответом не полезу
    (понимаю, что зарплата будет ниже)?

    Но зачем?
    После двух лет разработки на java хотел бы попробовать свои силы во front-end'e

    Но зачем?

    Я был фронтендом в начале, ушел в backend и не хочу больше возвращаться. Если вас не приглашают разрабатывать конструкторы, фреймворки, игры, сложные анимации, то вас ждут только формы, формы, красивые кнопочки, верстка форм, окей, я утрирую, еще может слайдер..., а хотя нет, уже есть в другой либе.
    Пригодятся ли знания с бэка по БД, архитектуре, паттернам?

    Нет и да. БД не пригодится, ибо с ним не работаешь, архитектура пригодится,... нет, один вуй придется разбираться с архитектурой разрабатываемого приложения. Много зависит как разрабатывают в конторе. В одной помню писали JS через паттерн модуль, т.к. все скрипты в одном файле
    Описание паттерна, достаточно хорош, в другой конторе в первый день мне сказали "Воу, воу, парень палехче, у нас скрипты в разных файлах, так что забей".
    Если вы понимаете под фронтенд верстку, то однозначно забейте, рутина та еще. Лучше склепайте конструктор верстки.
    Какое время займёт обучиться на front достаточно

    Вы уже имеете представление, поэтому месяц максимум. В мире верстки можно сверстать ВСЁ одним тегом div, с формами сложней, тут три тега form, input, submit. Короче 4 тега, ну еще body, head и title. Все остальные теги это "семантичность" и сео-говно является профанацией для тру прогера в виде заготовок с встроенным css'oм. Короче вы уже благодаря мне изучили основные 7 тегов по html. Можете уже начинать брать заказы по 2 бакса в час, будете круче любого индуса.

    Чёрт, меня понесло, но истина где-то рядом. :D
    Ответ написан
    1 комментарий
  • Стоит и какие наработки выкладывать на github для будущего портфолио?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    1. Стоит выкладывать свои классы (PHP) и библиотеки (JS).
    2. Стоит выкладывать нетривиальный и востребованный функционал.
    3. Целый проект чего-либо - лучше не выкладывать: мало кто поверит, что Вы делали его в одиночку и это достаточно трудоёмкая задача.
    4. Стоит в коде показать ваши знания и умения по владению структурой кода, алгоритмами, работой с текстом или бинарными данными, рекурсией и т.д.
    5. Лучше всего - взять отсутствующую реализацию востребованного алгоритма с википедии на том языке, на котором планируете показать свои навыки и реализовать (предварительно поискав на гитхабе и в гугл, и убедившись в отсутствии его реализации или недостаточном качестве).
    6. Можете ДАЖЕ ОДНУ функцию сделать, но чтобы она была востребована и делала свою работу лучше (качественнее и быстрее) существующих аналогов и привести таблицу сравнения по скорости исполнения вашего и других аналогичных решений.
    7. Задача портфолио на гите - не только показать качество кода и знания языка программирования (и различных подходов), но и способность мыслить не стандартно с максимально возможным результатом на выходе.
    Ответ написан
    2 комментария
  • Как взаимодействовать со скриптом, у которого зависимости установлены в venv?

    sim3x
    @sim3x
    0. /path/to/virt/env/python /path/to/your/script.py
    1. В /path/to/your/script.py в шебанге
    #!/path/to/virt/env/python

    Никогда не устанавливайте в "общее окружение"
    В крайнем случае pip install --user package_name
    Ответ написан
    2 комментария
  • Как искать по категориям Wordpress (т.е. категории в качестве результата)?

    maxxannik
    @maxxannik
    Сайты на WordPress + Интернет магазины WooCommerce
    Это далеко не тривильная задача. Более того - противоречит смыслу и назначению таксономий при правильной архитектуре сайта.
    Другой вопрос что в следствии пробелов в голове джуниоры допускают ошибку в архитектуре, после чего начинают искать решения как заставить работать поиск по таксономиям. Сам такой был лет 5 назад :)
    Ну и задача конечно решаемая. Разобрать механизм типового поиска WP_Query и повторить его для WP_Term_Query.

    Самый просто вариант - забабахать шорткод, который воткнуть в виджет, который воткнуть в шаблон поиска. Можно сразу шорткод воткнуть в шаблон минуя виджет :) Можно даже без шорткода - но это игра не для джуниора.

    Внутри шорткода перехватить s аргумент (get_query_var()), воткнуть его в search аргумент WP_Term_Query. Результат показать.
    Все. При поиске одна секция будет показывать найденные посты, вторая - найденные термины.
    Ответ написан
    Комментировать
  • Как автоматически добавить запись в Wordpress при заполнении формы Contact Form7?

    deniscopro
    @deniscopro Куратор тега WordPress
    WordPress-разработчик, denisco.pro
    Здравствуйте.

    Вообще, есть же специальные плагины для этого.

    Если нужно именно CF7, то там есть разные хуки. Я как-то пользовался wpcf7_before_send_mail для изменения email-адреса, думаю, он и для Вашей цели подойдет.
    Пример:
    add_action('wpcf7_before_send_mail', 'dco_wpcf7_before_send_mail');
    
    function dco_wpcf7_before_send_mail($contact_form) {
        $submission = WPCF7_Submission::get_instance();
        $data = & $submission->get_posted_data();
        $employee_name = $data['employee-name'];
    
        $post = get_page_by_title($employee_name, OBJECT, 'employee');
        $email = get_post_meta($post->ID, 'employee_email', true);
    
        if ($email) {
            $mail = $contact_form->prop('mail');
            $mail['recipient'] = $email;
            $contact_form->set_properties(array('mail' => $mail));
        }
    }


    Ещё есть плагин Flamingo, который записывает все сообщения, отправленные через Contact Form 7 в виде своего типа записей.

    Ну и ещё один вариант, погуглить как-нибудь так. Вполне возможно, что уже есть готовое решение.
    Ответ написан
    4 комментария
  • Сайт с упражнениями по SQL?

    @immaculate
    Программист-путешественник
    Ответ написан
    Комментировать
  • Чем отличается nat от proxy? чем отличается proxy от vpn?

    saboteur_kiev
    @saboteur_kiev Куратор тега Системное администрирование
    software engineer
    Очень внятно все написано на википедии.

    Nat это просто маршрутизация пакетов. Это часть функционала TCP/IP протокола.

    Прокси - отдельный софт, который работает с конкретным протоколом, например http/https, и следовательно разбирает эти пакеты для более гибкой настройки, логирования и т.д. Вдобавок программа-клиент должна уметь работать через прокси (можно конечно сделать прозрачный прокси на маршрутизаторе но это уже отдельная тема), но соответственно прокси подойдет только для http/https.

    VPN - virtual private network, вы поднимаете виртуальный интерфейс и подключаетесь к удаленному ресурсу, создавая виртуальную локальную сеть поверх другого подключения. В результате между вашим и удаленным устройством получается как бы прокинут виртуальный кабель прямого подключения, который снаружи выглядит как зашифрованный канал, внутри которого что-то передается.

    Через vpn можно подключиьтся к удаленному прокси серверу, таким образом все запросы между вашим компом и прокси сервером будут зашифрованными для внешнего наблюдателя.
    Ответ написан
    Комментировать
  • Как улучшить безопасность Windows 10 Home?

    @kalapanga
    Добавлю к ответу АртемЪ, кроме настройки бэкапа системы научите пользователя делать бэкап пользовательских данных, возможно какую-нибудь автоматизацию ему в этом плане добавьте. В облака, на съемные носители - по вкусу. Если это домашний комп, то систему и переустановить недолго, а рабочие документы или любимые фотки пропадут - беда будет.
    Ответ написан
    Комментировать
  • Как распарсить json в python?

    LazyTalent
    @LazyTalent
    Data Engineer, Freelancer
    Советую заменить urllib на requests:
    import requests
    import json
    
    json_obj = json.loads(requests.get(url).text)
    Ответ написан
    1 комментарий