Задать вопрос
  • Как выполнять функцию в одно и то же время в Django?

    syschel
    @syschel
    freelance/python/django/backend
    А на cron повешать не пробовали? Он же как раз и нужен для запуска скриптов по таймеру.

    Я думаю вы не с той стороны подошли к задаче. Кроном же стартовать джанговские вещи можно или через Celery или через менеджеры. Либо вообще просто питон файл вызывать, а внём функцию через __main__
    Ответ написан
    3 комментария
  • Как я могу купить N (виртуальный объект) - то что сделал другой человек, через интнернет?

    syschel
    @syschel
    freelance/python/django/backend
    Подробно уже описывал в другом вопросе.
    Если кратко, то в РФ есть два понятия прав. Одно на продукт, которое в 99% случаев заключают по договору и думают что этого достаточно. Второе на "исключительные права", то самое что можно обозначить как "авторское право" или "интеллектуальное". Вот на второе мало кто заключает договора и отдельно оплачивает. Большинство как исполнителей, так и заказчиков, даже не знает о таком и думает что достаточно варианта №1. Но это заблуждение, нужно обязательно второй договор и отдельную оплату, либо прописывать в первом, что исключительные права тоже переходят заказчику.
    Ответ написан
    1 комментарий
  • Почему collectstatic собирает дубли?

    syschel
    @syschel
    freelance/python/django/backend
    Если я правильно вас понял, то думаю, что вы не до конца поняли смысл STATICFILES_DIRS и STATIC_ROOT

    Разрабатывая приложение локально, вы используете runserver и тут статику отдаёт девелопесркий вебсервер джанги. Когда же вы загрузите на продакшн, там статику отдавать будет уже вебсервер (apache, nginx etc). Пока вы разрабатывает, то runserver берёт статику из пути STATICFILES_DIRS, на продакшене статика будет браться из STATIC_URL.
    Выполняя же команду collectstatic, вы говорите джанге "из локальных папок (а их может быть много), всё собрать в одной для продакшена". Вот и получается, что вы увидели "дубли".

    # Static files (CSS, JavaScript, Images)
    # https://docs.djangoproject.com/en/1.11/howto/static-files/
    MEDIA_ROOT = os.path.join(BASE_DIR, "media")
    MEDIA_URL = '/media/'
    STATIC_ROOT = os.path.join(BASE_DIR, "static")
    STATIC_URL = '/static/'
    
    STATICFILES_DIRS = (
        os.path.join(BASE_DIR, "dev_static"),
    )

    Если папка из STATICFILES_DIRS находится внутри проекта, то её я обычно добавляю в .gitignore
    Ответ написан
    3 комментария
  • Какой стэк подойдет для удаленной работы/фриланса (КРОМЕ html/css/js)?

    syschel
    @syschel
    freelance/python/django/backend
    Самое простое, это пойти на 1-2 крупных фриланс площадок и начать их мониторить хотя бы неделю. Посмотреть там какие вообще есть категории, сколько и каких видов работ там постоянно появляется. Сколько и как быстро/часто фрилансеров на них откликается. Ну и потом пробовать что-то из этого делать/изучать, хотя бы по верхам. То что понравится и зацепит, за то и браться изучать глубже.
    А так, взять и угадать что вам понравится? Не реально, ибо, как я заметил, почти 95% начинашек, бросают начинание через неделю-две и уходят вообще в левое, никак не связанное с фрилансом или программированием. При том перед бросанием, они пробуют метаться в разные не связанные стеки и сферы.
    Ответ написан
    Комментировать
  • Как передать картинку через форму Django?

    syschel
    @syschel
    freelance/python/django/backend
    Забыт параметр файлов request.FILES
    form = NoteForm(request.POST, request.FILES)

    А так же в HTML теге формы, забыт параметр того, что форма работает с файлами
    <form method="POST" enctype="multipart/form-data">
    Ответ написан
  • Как добавить свой рендеринг страницы в админке?

    syschel
    @syschel
    freelance/python/django/backend
    Как изменить шаблон действующей страницы в админке, указал Astrohas
    Но если теперь нужно в пределах админки создать новую страницу (не относящуюся к существующему функционалу CRUD), куда и будет указывать ссылка из изменённого шаблона. То переопределяем get_urls()
    P.S. Вьюху от данного проекта можно в файле admin.py описать как в примере, но я бы вынес всётаки в views.py

    пример:
    class PetAdmin(admin.ModelAdmin):
        ...
        def get_urls(self):
            urls = super(PetAdmin, self).get_urls()
            my_urls = [
                url(r'^(?P<id>\d+)/radius/$', self.admin_site.admin_view(PetAdminRadius))
            ]
            return my_urls + urls

    И открывается сиё чудо по адресу:
    localhost:8000/admin/app_name/model_name/639/radius
    Ответ написан
    Комментировать
  • Как скрыть некоторые поля для отдельного пользователя в Django?

    syschel
    @syschel
    freelance/python/django/backend
    Посмотри как джанго генерирует создание пользователя. Там функция на добавление пользователей, как раз и выводит только определённые поля.

    class UserAdmin(admin.ModelAdmin):
        fieldsets = (
            (None, {'fields': ('username', 'password')}),
            (_('Personal info'), {'fields': ('first_name', 'last_name', 'email')}),
            (_('Permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser',
                                           'groups', 'user_permissions')}),
            (_('Important dates'), {'fields': ('last_login', 'date_joined')}),
        )
    
        add_fieldsets = (
            (None, {
                'classes': ('wide',),
                'fields': ('username', 'password1', 'password2'),
            }),
        )
        def get_fieldsets(self, request, obj=None):
            if not obj:
                return self.add_fieldsets
            return super(UserAdmin, self).get_fieldsets(request, obj)

    Если объект уже создан, то выводит стандартный набор из кортежа fieldsets.
    В общем, переопределяй get_fieldsets()
    Ответ написан
    1 комментарий
  • Как прописываются пути к django на серверах хостера?

    syschel
    @syschel
    freelance/python/django/backend
    Первая и главная ошибка в том, что сайты на Python и под фреймворком Django имеют свою специфику установки и запуска. Там нужен, по первости, очень большой бубен и много терпения. То что на хостинге прописали, это правила для HTML(голый) или PHP сайтов, которые в 98% используются "веб разработчиками". Вам нужно гуглить "установка Django на %ваш_хостинг%" или "Deploy django". Проще всего попросить хостера вам помочь, сразу сказав, что сайт на python`e, либо найти фрилансера на разовую услугу установки плюс составление инструкции пошаговой его действий.

    upd: разница между html(php) сайтами и python(django) в установки на веб хостинг в том, что первые обычно ограничиваются залитием файлов в строго указанную хостером папку, просто как набор файлов. А Django сайт устанавливается как программа, условно говоря "через инсталлятор" и по этому требует больше обычных прав пользователя, больше знаний оператору и наплевать на "папку на сервере".
    Ответ написан
    5 комментариев
  • Как и куда платить налог фрилансеры?

    syschel
    @syschel
    freelance/python/django/backend
    В стране проживания и оплачиваете налоги. Плюс есть понятие "налоговый резидент", относящийся к физическому нахождению в конкретной стране конкретный срок. В каждой стране это по своему, но как правило это в районе 6 месяцев.
    Ответ написан
    1 комментарий
  • Теперь это норма для фриланса?

    syschel
    @syschel
    freelance/python/django/backend
    Начнём с того, что Вы видать сами не поняли. MVP это считайте прототип, а дословно "minimum viable product — минимально жизнеспособный продукт — простейший работающий прототип продукта". То есть тут не требуется высококлассный законченный продукт. Уже есть почти на любом языке фреймворки/программы, которые позволяют создать на своём языке приложение, а потом нажать "сгенерировать под андроит, иос и т.д.". Да, работать они будут хуже чем писалось бы на нативных языках, особенно с логикой. Но ведь тут просят MVP.

    Клиентов которые НЕ программисты, тоже полно. Они могут шапочно знать какие-то "страшные слова", но сами не являясь специалистами в НАШЕЙ сфере, не понимают что пишут. Так же наверно и на медицинском форуме, народ обсуждает "клиентов", которые "пьют слабительное вместе со снотворным, перепутав рецепты". Часто видел клиентов, которые просто по незнанию написали "бред". Либо задачу ставил HR, вообще далёкий от темы и тупо скопировавший "похожие" объявления.

    Ну а клиентов которые хотят всё и сразу, при том за копейки (второй фейсбук за 100 долларов! сам бы сделал, да времени нет, делов на пару вечером), полно. При том за мои ~15 лет фриланса/офиса, это было постоянно. Уже даже не обращаю внимания на них, как на рекламные баннеры взгляд перестал цепляться. По этому ваше "удивление" мне не понятно. Такое было всегда, везде и будет так же всегда и везде. Просто отсеивайте.
    Ответ написан
    2 комментария
  • Что лучше подойдет для моего сайта хостинг, сервер?

    syschel
    @syschel
    freelance/python/django/backend
    1. Хостинг - всё настроенно, права урезаны до минимума, одним ПК пользуется куча клиентов, один IP на кучу клиентов.
    2. ВПС(VPS виртуальный сервер) - как правило настраиваешь всё сам, права полные (root), одним ПК пользуется несколько клиентов, выделенный IP только для тебя.
    3. Выделенные машины - как правило настраиваешь всё сам, права полные (root), одним ПК пользуется один человек, выделенный IP только для тебя.

    Хостинг практически любой подойдёт для старта, пока раскрутишься до уровня серьёзной посещаемости, может пройти год или быстрее забросишь (очень мало проектов выстреливает без значимых бюджетов на продвижение). На хостинг размещаешь движок(ЦМС / код) сайта.
    Сами же видео ролики, то есть статичные файлы (видео, фото, музыка) - то что весит много, но не является исполняемым кодом, выносишь на сервисы хранения статики. Там можешь терабайтами хранить и платить только за трафик. Пример Amazom s3, MS azure, feralhosting. .
    ^ Это сейчас самая распространенная практика и выгоднее чем брать сервис который выполняет програмную часть(код сайта) и так же имеет кучу места под статику.
    Ответ написан
  • Как стать специалистом на фрилансе?

    syschel
    @syschel
    freelance/python/django/backend
    Думаю тебе стоит погуглить "Эффект Даннинга — Крюгера".
    sharikov-1.jpg

    Ты именно ему и подвержен в данный момент. То есть ты только начал, сделал первый шаг, он оказался удачным и ты сразу же возгордился, начав считать себя "крутым" специалистом. Это видно по тому что ты пишешь и как, да и по самому вопрос.

    Хотя код в чужих проектах, с которыми мне приходится работать в разы хуже моего и это еще раз подтверждает, что на фрилансе работают одни неучи и некомпетентные специалисты..

    А с чего ты взял, что чужой код, который видел ты, хуже твоего? Возможно он тебе не понятный, да, но не факт что хуже. Я в своё время, когда только начинал, тоже такое думал часто. Сейчас даже стыдно вспоминать то время.

    Самый лучший способ развиваться, это работать в команде. При этом ещё и общаясь с командой, а не просто безмолвно пулить в общий репозитарий.

    Странно, что вы сказали о своих наработках и фреймворках, которые используют фрилансеры. Я не считаю это хорошим подходом, так как это велосипеды, которых должно быть как можно меньше в нормальном проекте.

    Вот один из примеров новичка. Обычно у них две крайности: писать всё самому (от ОС до фреймворка); вообще ничего не писать используя сотни готовых решений. У тебя второй вариант, порой решение кроется в 2-3 строчках кода, но новичок качает здоровенную библиотеку или целый фреймворк. При этом не редко бывает, что новичок берёт готовый фреймворк, решение задачи в 2-3 строчках кода в вызове базовых функций этого фреймворка, но нет, он будет искать отдельную библиотеку, так как почитать документацию по фреймворку не его.

    Если убрать тот пафос который ты набросал в описании и комментах, а ответить только на заголовок: Решать больше коммерческих задач, участвовать в командных проектах, решать более сложные задачи(повышать сложность от проектов к проекту), учится и работать.
    Ответ написан
    Комментировать
  • Как получить категории, если в их потомках есть товар?

    syschel
    @syschel
    freelance/python/django/backend
    Один из вариантов, взять модель товаров, сгруппировать их по категориям = список категорий.
    С родителями эту уже строить деревья. Выше ты получаешь все категории у которых есть товары, дальше смотришь есть ли родитель и если есть то лезешь по дереву вверх (если структура изначально не древовидная, а глубина категорий больше 2х).
    Ответ написан
    2 комментария
  • Как правильно спарсить данные и записать их в БД?

    syschel
    @syschel
    freelance/python/django/backend
    Ищешь уникальное значение (поле) которое есть у всех записей. По нему и сравниваешь. Если в базе есть с таким значением в этом поле запись - обновляем, если нет то создаём. В базе можно даже принудительно сделать данное поле уникальным, что бы ругалось при дублях.

    З.Ы. Не плохо бы указывать и базу данных и тип данных (хотя бы откуда они берутся), для нормального ответа, а не угадывания мыслей..
    Ответ написан
  • Upwork - как грамотно сдать работу и потребовать оплаты?

    syschel
    @syschel
    freelance/python/django/backend
    А какой тип контракта был?
    Если по фиксированной оплате. Тогда нужны условия:
    1) Клиент верифицировал свой паймент (в профиле добавил способ оплаты и подтвердил его работу).
    2) Клиент зарезервировал сумму за контракт или милестоун в апворке (с клиента списалась сумма и лежит на апворке замороженной).
    Если эти условия выполнены. То просто загружаем через апворк работу и жмём "отправить на проверку". Всё, теперь ждём. Отправлять нужно ТОЛЬКО через апворк, а не в скайпе/почте.
    Если почасовая оплата, то должен быть трекер и п1. из предыдущего варианта выполнен. Так же отправляешь работу через апворк на проверку.

    Почитай перед началом гайд(инструкцию) по апворку. Довольно много информации собранно именно фрилансерами, а не оф-правила биржи --> odeskconf.github.io/guide
    Ответ написан
    Комментировать
  • Может кто-нибудь, как заказчик посмотреть профиль на Upwork (интересны скрытые отзывы если они есть)?

    syschel
    @syschel
    freelance/python/django/backend
    Нет скрытого отзыва, это миф. Вернее не так перевели/поняли. Клиент оставляя отзыв (который все видят) имеет ещё и вариант оценить "звёздочками" до 5, которые тоже все видят.
    А вот то, что многие называют "скрытый отзыв" который влияет на JSS. Это вопрос "Какова вероятность что вы порекомендуете этого фрилансера" и шкала от 1 до 10.

    З.Ы. Приватный профиль, означает что он просто скрыт от не зарегистрированных пользователей сайта. Не важно какой тип профиля.
    Ответ написан
    1 комментарий
  • Как можно формировать pdf документы на Django?

    syschel
    @syschel
    freelance/python/django/backend
    Мой пример функции генерации PDF на основании передачи html шаблона и контекста(данные из базы данных).
    xhtml2pdf
    from django.http import HttpResponse
    from django.template.loader import get_template
    from django.template import Context
    import cStringIO as StringIO
    import xhtml2pdf.pisa as pisa
    
    def render_to_pdf(template_src, context_dict, filename='contract.pdf'):
        """ Отдаю PDF файл """
        template = get_template(template_src)
        context = Context(context_dict)
        html = template.render(context)
        result = StringIO.StringIO()
        pdf = pisa.pisaDocument(
            StringIO.StringIO(html.encode('utf-8')),
            result,
            encoding='UTF-8',
            show_error_as_pdf=True
        )
        if not pdf.err:
            response = HttpResponse(result.getvalue(), content_type='application/pdf')
            response['Content-Disposition'] = 'attachment; filename=%s' % filename
            return response
        return HttpResponse(u'We had some errors!')
    
    def contract_text(request):
        text = ContractText.objects.filter(user=request.user)
        return render_to_pdf('pfd_template.html', {'text': text}, 'new_contract.pdf')
    Ответ написан
    Комментировать
  • Как избавиться от дублирования информации в django?

    syschel
    @syschel
    freelance/python/django/backend
    Если все книги подвязаны к сериям, а все серии уникальны (нет дублей). То нужно выводить именно серии. А уже в темплайте(шаблоне) подциклом выводить книги данной серии.
    Ответ написан
  • В кого переквалифицироваться из программиста?

    syschel
    @syschel
    freelance/python/django/backend
    У меня было подобное. Когда делал штамповку и мелочёвку. Стоило перейти на более высокий уровень, с разработкой от полугода. Сразу всё пропало. Попробуйте сменить тип проектов(заказов).
    Ответ написан
    Комментировать