• Как достать kwargs из url в DRF?

    @antonksa
    Кривоватое решение. Достаточно передать несуществующий id прилетит 500.
    Поэтому все первичные ключи нужно валидировать.

    class RatingSerializer(serializers.Serializer):
        user = serializers.PrimaryKeyRelatedField(queryset=User.objects.all())
        rating = serializers.IntegerField(min_value=1, max_value=5)
    
        def create(self, validated_data):
            user = validated_data['user']
            rating = validated_data['rating']
            profile = Profile.objects.get(user=user)
            rating_obj = Rating.objects.create(profile=profile, rating=rating)
            return rating_obj


    А вьюха должна тогда выглядеть так:
    class RatingAdd(generics.GenericAPIView):
        serializer_class = serializers.RatingSerializer
        permission_classes = [IsAuthenticated]
    
        def post(self, request, **kwargs):
            data = request.data.copy()
            data.update({'user': kwargs['userid'}})
            serializer = self.get_serializer(data=data)
            serializer.is_valid(raise_exception=True)
            serializer.save()
    
            return Response(serializer.data, status=status.HTTP_201_CREATED)


    (upd) Сорян, поправил вьюху, т.к. не удалил кусок оригинального кода.

    Что до вопроса про kwargs, то непонятно чего вы ждали, ведь это же kwargs ViewSet'a а не сериализера. Тут нужно быть осторожным, но вообще их можно выковырять из контекста, так как ApiView.get_serializer() еще пропихивает в сериализер контекст:
    def create(self, validated_data):
        view = self.context.get('view')
        userid = view.kwargs['userid'] if view else None
        if not userid:
            raise NotFound('User with given id does not exist.')
        rating = Rating.objects.create(profile=Profile.objects.get(user__id=userid), **validated_data)
        return rating
    Ответ написан
    Комментировать
  • Как открыть изображение из таблицы Postgresql?

    Kwisatz
    @Kwisatz
    Больше web-приложений, хороших и разных
    Для какой цели вы пытаетесь переложить задачи ФС на БД?
    Ответ написан
    Комментировать
  • Как открыть изображение из таблицы Postgresql?

    igorzakhar
    @igorzakhar
    Библиотека Pillow тебе в помощь:
    $ pip install Pillow

    from PIL import Image
    import io
    
    image_data = ... # байты картинки
    image = Image.open(io.BytesIO(image_data))
    image.show()
    Ответ написан
    Комментировать
  • Как открыть изображение из таблицы Postgresql?

    @pfg21
    ex-турист
    1. получить поток байтов из ячейки постгре
    2. скормить онный поток байтов декодеру картинки.
    3. отобразить картинку

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

    @riki-tiki
    Что писать во views сильно зависит от выбранного Вами стиля: использовать классы или функции.
    Предположу, что функции.

    Самая классическая схема обработки формы (взято с документации):
    def get_name(request):
        # if this is a POST request we need to process the form data
        if request.method == 'POST':
            # create a form instance and populate it with data from the request:
            form = NameForm(request.POST)
            # check whether it's valid:
            if form.is_valid():
                # process the data in form.cleaned_data as required
                # ...
                # redirect to a new URL if you want:
                return HttpResponseRedirect('/thanks/')
        # if a GET (or any other method) we'll create a blank form
        else:
            form = NameForm()
        return render(request, 'name.html', {'form': form})


    При этом в месте кода (# process the data in form.cleaned_data as required) уже как раз и надо обрабатывать полученные данные.
    form.cleaned_data - это атрибут экземпляра вашего класса формы. И этот атрибут есть словарик, в котором ключи - это имена полей.
    Например, subject = form.cleaned_data['subject']
    Дальше, думаю, справитесь.

    А вообще пройдите раздел First steps и Forms документации https://docs.djangoproject.com/en/2.0/
    Ответ написан
    1 комментарий
  • Как развить в себе аналитические способности и математическое мышление?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Математика не поможет научиться программировать. Но освоив такие понятия как функция, выражение, переменная, в математическом плане станет легче осваивать материал по программированию. Нужно понять что вызов функции эквивалентен ее значению. Попробуйте сразу в питоне освоить lambda, filter, map, reduce вдруг пробьет. Но не огорчайтесь если сперва покажется трудным. Нужно пересилить свой мозг.
    Ответ написан
    Комментировать
  • Что получает инвестор от доли в стартапе?

    Inv_Hunter
    @Inv_Hunter
    Управляющий партнёр в BACG
    Здравствуйте, Андрей,
    Ответы на Ваши вопросы - отдельная книжная полка или, как минимум, цикл статей. Тем не менее, я постараюсь вкратце ответить и если у Вас возникнут дополнительные вопросы, с радостью помогу Вам разобраться в обстоятельной беседе. Итак по порядку.

    Доля чаще всего указывается в 30% - и что с ней делать?

    Тут уже ранее отвечали, что эта цифра в нынешнее время ошибочна. Это так. На практике процент инвестора тема обстоятельных переговоров. Факторы, которые влияют на долю венчурного инвестора - достаточно внушительный список. Здесь: приблизительная оценка стоимости и доходности проекта, перспектива роста и расширения, заинтересованность других инвесторов, состав, компетенции и качество команды, ограничения в разработке и пр. Исходя из этого, на ранней стадии, доля может варьировать от 10 до 80%.

    Приведу пример из собственного опыта. Командой из 3 человек мы разрабатывали проект для поддержки стартапов - MY DRAFT. На нас вышел бизнес-ангел и предложил свою финансовую помощь. На первой встрече он огласил своё предложение по доле в 50%. Мы с ребятами обсудили это и решили, что в принципе способны и без его денег вести разработку (энтузиазма, в то время, было много в запасе). В итоге, крайнее предложение инвестора - равное распределение. Мы согласились, но затем всё пошло кувырком и команда распалась.

    К чему этот пример: доля инвестора - не фиксированная цифра и зачастую преобладающим звеном в её определении будет желание венчура контролировать команду или предоставить её полную свободу. Но это в основном для посевных стадий.
    Дальше сложнее. Последующие раунды размывают доли команды и тут уже нужно заниматься арифметикой. Такая же ситуация возникает, когда несколько инвесторов вкладываются одновременно. Здесь и сумма от каждого инвестора и "жадность до возврата" влияют на проценты, которые им будут причитаться.

    Как распоряжаться? Как выводить средства?

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

    Как влиять на развитие проекта?

    Это уже зависит от того, что Вы хотите и роли, которую играете в проекте. Мне сложно дать однозначный ответ на этот вопрос без дополнительной информации. Неясно, Вы интересуетесь со стороны инвестора или лидера команды или какой-то другой третей стороны. Если хотите, можем более обстоятельно обсудить по почте. Вот моя da@karimov.org

    Успехов!
    Ответ написан
    Комментировать
  • Как реализовать Конвертер Видео на Python?

    Пользователи загружают сжатое видео в одном из принимаемых форматов. Есть рекомендуемые параметры для загружаемых в YouTube видео.

    Что значит, «как YT сжимает видео»? Сжимают пользователи. YouTube на своей стороне генерит уменьшенные/облегченные версии. Скорее всего, они до сих пор используют ffmpeg.
    Ответ написан
    4 комментария
  • Правильно ли построен план обучения?

    saboteur_kiev
    @saboteur_kiev Куратор тега Python
    software engineer
    Весь ваш план обучения никак не годится для получения знаний. Он годится только для ознакомления.
    Почему? Потому что в нем ВООБЩЕ нет практики, одно чтение книг.

    Не парьтесь с чистотой помыслов, просто пробуйте устраиваться джуниором - с реальной практикой, обучение будет в разы быстрее.

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

    Пишите код, читайте требования к вакансиям, пишите код, ходите на интервью, изучайте вопросы, которые были на интервью, ходите на следующие интервью.
    Ответ написан
    Комментировать
  • Правильно ли построен план обучения?

    BBmike
    @BBmike
    План не очень.

    Зачем тебе браться за изучение ООП и алгоритмов, если у тебя в активе не будет пары десятков собственноручно разработанных приложений типа калькуляторов, морских боёв и прочих таймеров с записными книжками?

    www.checkio.org (а паче того codewars) это отличный ресурс с задачками на манипуляции со структурами языка
    это как ресурс с гаммами всех тональностей и ладов для гитариста. он научится играть по ним?
    Ответ написан
    Комментировать
  • Правильно ли построен план обучения?

    @WorldEn
    Лично я изучал Python следующим образом:

    - Сначала прочитал и прорешал всю книгу "Программируем на Python" Майкла Доусона.

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

    - После этого я уже начал делать свои проекты и при возникновении проблем лез в google.ru и искал ответы на свои вопросы (где знания английского очень пригодятся!)

    Пройдя все эти этапы рекомендую прочитать М. Лутца и начать изучать алгоритмы и структуры данных. Однако, если метите в WEB , то лучше сразу начать изучать Django, MySQL, HTML, CSS, JavaScript.
    Ответ написан
    Комментировать
  • Правильно ли построен план обучения?

    Atanvar
    @Atanvar
    Frontend developer
    Вот после пункта первого нужно переходить к практике нормальной - проект придумай и пиши, а затем уже алгоритмы, совершенные коды и тому подобное.
    Ответ написан
    Комментировать
  • Как поменять имя приложения и модель на русский в админке Django?

    zigen
    @zigen
    1. In apps.py:

    from django.apps import AppConfig
    
    class FacesetConfig(AppConfig):
        name = 'faceset'
        verbose_name = "Что-то твое на русском на родном"


    2. models.py

    class Timetables(models.Model):
        name = models.CharField(u'time', max_length=30)
    
        class Meta:
            verbose_name = 'Что-то твое на русском на родном'
            verbose_name_plural = 'Что-то твое на русском на родном'
    
        def __str__(self):
            return self.name
    Ответ написан
    2 комментария
  • В чем преимущества *nix, linux перед windows (для веб разработчика)?

    Jump
    @Jump Куратор тега Windows
    Системный администратор со стажем.
    Вообще нет никакой разницы.
    Работать надо в той системе в которой удобно.
    Ответ написан
    17 комментариев
  • С чего начать изучение MySQL для веб-проекта?

    kiberspy
    @kiberspy
    Я думаю, нужно начать читать/учить о базовом SQL-языке (синтаксис которого идентичен, наверное, процентов на 70 для всех серверов реляционных БД)...
    Установите MySQL и из консоли пробуйте подключиться к нему, создать/удалить таблицы, добавить/удалить/обновить записи... создать запросы на выборку данных и объединение таблиц... и т.д. и т.п.
    Ответ написан
    Комментировать
  • Не зазорен ли поиск ответов в Google на работе?

    alsopub
    @alsopub
    Зачем в Гугл, приходите на Тостер :)
    Ответ написан
    Комментировать
  • Есть ли готовые шаблоны для Django?

    ulkoart
    @ulkoart
    Для django не может быть шаблонов, не CMS это. Откуда шаблон может знать как вы организуете и именуете данные.
    Ответ написан
    1 комментарий
  • Есть ли готовые шаблоны для Django?

    Sanes
    @Sanes
    Вы фреймворк с CMS/сборкой не перепутали?
    Ответ написан
    6 комментариев
  • Как сохранить из формы в модель несколько картинок?

    В одну модель сохранить несколько кортинок нельзя(если поле для картинок одно).
    Для сохранения картинок нужно создать новую модель.
    models.py
    class Advert(models.Model):
        category = models.TextField()
        title = models.CharField(max_length=64)
        description = models.CharField(max_length=900)
        date = models.DateTimeField(auto_now_add=True, null=True)
    
    
    class AdvertImage(models.Model):
        advert = models.ForeignKey(Advert)
        photo = models.ImageField(upload_to='uploads/')

    forms.py
    class AddAdvertForm(ModelForm):
        class Meta:
            model = Advert
            fields = '__all__'
    
    
    class AdvertImagesForm(forms.Form):
    
        photos = forms.FileField(widget=widgets.FileInput(attrs={'multiple': True}))
    
        def __init__(self, *args, **kwargs):
            if 'request' in kwargs:
                self.request = kwargs.pop('request')
            super(AdvertImagesForm, self).__init__(*args, **kwargs)
    
        def clean_photos(self):
            # Остаются только картинки
            photos = [photo for photo in self.request.FILES.getlist('photos') if 'image' in photo.content_type]
            # Если среди загруженных файлов картинок нет, то исключение
            if len(photos) == 0:
                raise forms.ValidationError(u'Not found uploaded photos.')
            return photos
    
        def save_for(self, advert):
            for photo in self.cleaned_data['photos']:
                AdvertImage(photo=photo, advert=advert).save()

    views.py
    class CreateAdvertView(View):
        template_name = 'bulletinboard/add_advert.html'
        form_class = AddAdvertForm
        form_images_class = AdvertImagesForm
        model = Advert
    
        def get(self, request):
            form = self.form_class()
            form_images = self.form_images_class()
            return render(request, self.template_name, {'form': form, 'form_images': form_images})
    
        def post(self, request):
            form = self.form_class(request.POST)
            form_images = self.form_images_class(request.POST, request.FILES, request=request)
            if form.is_valid() and form_images.is_valid():
                advert = form.save()
                form_images.save_for(advert)
                return HttpResponseRedirect('/')
            return render(request, self.template_name, {'form': form, 'form_images': form_images})
    Ответ написан
    7 комментариев
  • Есть ли жизнь на windows python разработчику?

    @Tarvitz
    Сейчас пишу код на windows машине, потому что рабочий ноут отъехал.

    В целом:
    - Pycharm закрывает большую часть вопросов в разработке
    - www.lfd.uci.edu/~gohlke/pythonlibs вот этот сайт закрывает 99% проблем с установкой питон пакетов с C binding'ами. Вчера вот ujson устанавливал.
    - Docker для Windows закрывает все оставшиеся проблемы с поднятием различных сервисов: mongodb, memcached, redis, postgresql, etc.
    - Git for windows (вместе с git bash) даёт возможность использовать часть инструментария linux, начиная от bash, заканчивая grep/sed/awk/find/etc. (опционально, но мне как linux'oid'у очень помогает)

    Дискомфорта не испытываю совсем. Да, если по честному, то даже моя текущая конфигурация это linux like конфигурация, просто работающая на винде. Но это не значит что на ней нельзя писать комфортно код.
    Также соглашусь, что linux/mac для питон разработке будет удобнее.
    Ответ написан
    Комментировать