• Вопрос по выводу контента Django в HTML?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    Ну так передавайте во вьюхах данные в контекст, и в темплейтах эти данные собственно выводите.

    В views.py передаете в контекст какие-то данные:
    from django.http import Http404
    from django.shortcuts import render
    from models import КакаяТоМодель
    
    def my_view(request, какой_то_id):
        try:
            my_obj = КакаяТоМодель.objects.get(pk=какой_то_id)
        except КакаяТоМодель.DoesNotExist:
            raise Http404(u"Объект КакаяТоМодель с id={id} отсутствует в базе".format(id=какой_то_id))
    
        какая_то_переменная = ФункцияДляПолучениЧегоТоИзБазы()
        return render(request, 'какой_то_темплейт.html', {'my_obj': my_obj, 'my_var': какая_то_переменная})


    а в темплейте получаете то что передали в контекст
    ...
    {{ my_obj.какое_то_поле }}
    {{ my_obj.какое_то_поле }}
    ....
    {{ my_var }}
    ....


    А вообще вот это:
    class BannerView(View):
    model = Banner
    template_name = 'home.html'

    def get_queryset(self):
    return Banner.objects.all()


    нужно заменить на это:
    class BannerView(ListView):
        model = Banner
        template_name = 'home.html'

    тогда в темплейте список всех ваших объектов передастся в виде object_list, по которым вы можете пробежаться как-то так:
    ....
    {% for obj in object_list %}
         {{ obj.какое_то поле }}
    {% endfor %}
    ....


    тут
    class HomePage(TemplateView):
    template_name = 'home.html'

    контекст можно передать так:

    class HomePage(TemplateView):
        template_name = 'home.html'
    
    def get_context_data(self, *args, **kwargs):
        context = super(HomePage, self).get_context_data(*args, **kwargs)
        context['имя_какой_то_переменной_для_темплейта'] = ФункцияДляПолученияКакихТоДанных()
        return context


    тогда в темплейте она будет доступна как:

    ....
    {{ имя_какой_то_переменной_для_темплейта }}
    ....


    А вообще - пройдите хотя бы какой-нибудь туториал по Django где это подробно объясняется...
    Ответ написан
  • Удаленная база Mysql и Android приложение как поступить?

    petermzg
    @petermzg
    Самый лучший программист
    1. Удаленный сервер должен быть доступен из интернета. Так что база должна быть или на хостинге или у вас за NAT с белым IP.
    2. Пишете web сервер и поднимаете на сервере (на хостинге за вас уже подняли) уж на чем нравится (asp.net mvc или php, или python)
    2.1. Сервер взаимодействует с вашей Mysql базой
    2.2. Можно из андройд приложения делать http запросы к серверу и получать ответ на выбор (xml, json, text, набор байт)

    Мне вот нравиться протокол (json-rpc)
    Ответ написан
    Комментировать
  • Перехожу с RoR на Python (Django) нужна помощь?

    un1t
    @un1t
    1) обычно мне двух версий питона хватает которые есть в убунте, но можно еще юзать deadsnakes
    Для разных версий пакетов virtualenv.
    2) лучше 3
    3) у джанги даже pre-alpha версии довольно стабильные, а релиз уже сразу смело можно юзать.
    4) хрен его знает
    5) шаблоизатор встроенный либо jinja2. Так обычно pillow, djangorestframework, django-mptt, pytest, pytest-django, django-debug-toolbar, pytils, django-cleanup, sorl-thumbnail
    Ответ написан
    Комментировать
  • Что такое файл models в проекте django?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    Я верно понимаю, что файл models.py - это файл, где мы создаём бд для нашего проекта?

    Модель - сущность из конкретной задачи над которой вы работаете. Будь то пользователь, статья, продукт или еще что со всеми их взаимоотношениями, относящимися к данному приложению.
    В Django модели принято размещать в models.py
    Сами таблицы в БД создает Django автоматически. Примерное представление вы сможете получить если почитаете о миграциях https://docs.djangoproject.com/en/1.9/topics/migra...

    Если да, то наверняка можно создавать модель в SQLite studio и затем использовать её в проекте?

    Можете. Только сильно осложните себе жизнь.
    Работа с моделями абстрагирует вас в какой-то степени от конкретной их реализации в конкретной ДБ, и перекладывает львиную долю работы на саму систему Django. Также не забудьте что Django создает также служебные таблицы необходимые для работы - для хранения сессий, типов моделей, пользователей и групп, и пр.

    Тогда код в этом файле должен сгенерироваться по созданному файлу из SQLite studio?

    Можно сделать и так. Командой manage.py inspectdb сгенерить модели из существующей базы, и попробовать их завести в проекте на Django. Но опять таки - вы сильно осложните себе жизнь. Обычно это требуется, когда необходимо связать Django с уже существующими таблицами в сторонней БД для работы с ними как с моделями. Обычно эти модели прописывают как модели с флагом managed=False, дабы Django не влияла на структуру уже существующей БД.
    Ответ написан
    3 комментария
  • Как запустить django test на sqlite?

    @marazmiki
    Укротитель питонов
    Сделайте отдельный конфиг для тестов:
    # project.settings_test
    from .settings import *
    
    DATABASES['default'] = {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': ':memory:'
    }
    И запускайте тесты с явным указанием тестового конфига:
    ./manage.py test --settings=project.settings_test --failfast
    Как Вы потом поймёте, БД — это не единственное, что желательно переопределить для тестов
    Ответ написан
    Комментировать
  • В чем моя причина провала тестового задания Яндекса?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ну давайте я покритикую:

    возьмем файлик

    1) вы не разобрались как объявлять методы у прототипов с новой нотацией `class`:

    class Travelsort {
        constructor() {}
        sortTickets(tickets) {}
    }


    2) вы не умеете пользоваться исключениями.
    if (!Array.isArray(cards)) {
        throw new ValueError('Wrong input');
    }


    3) использование let там где должен использоваться const

    4) в принципе использование переменных там где их быть не должно

    5) вы зачем-то реализовали свою функцию сортировки, я не увидел в требованиях отсутствия возможности использовать старый добрый Array.prototype.sort

    6) Общие замечания по кодинг стайлу. snake_case там где должен быть camelCase, пишите с большой буквы то что должно быть с маленькой и т.д.

    7) нарушения принципа единой ответственности. У вас объеткт умеет и сортировать и писать куда-то. Это категорически плохо.

    8) Если исправить 7-ой пункт то наш класс превращается просто в функцию.

    Далее... берем следующий файлик

    1) если вы пишите комментарии к таким маленьким кускам кода - стало быть у вас хромает именование вещей. Все должн быть понятно просто из названий методов/функций/переменных. При работе в команде над серьезными проектами это немаловажно, ибо код чаще читают чем пишут и экономить нужно именно это время.

    2) вы зачем-то тут в прототип объекта строки впихиваете функции для парсинга CSS. Таким образом мы нарушаем принцип единой ответственности. Да и в целом расширять без надобности прототипы объектов как-то не ок.

    Чуть дальше проскролил - вы пытаетесь расширить прототип строк для того что бы добиться API jquery? ух, батенька.

    3) очень много дублирования.

    4) очень плохо с protected variations.

    Справедливости ради, ваш код входит в категорию ">50% JS кода", так что не расстраивайтесь. Просто для работы в яндексе нужен чуть более высокий уровень и понимание вещей.
    Ответ написан
    17 комментариев
  • Как откатить makemigrations в django?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    Просто удалите файл данной миграции если она еще не применена. Исправьте и выполните makemigrations еще раз.
    По manage.py show migrations можно глянуть примененные и непримененные миграции.
    Указав номер, можно откатиться на предыдущую миграцию
    manage.py migrate <модель> <номер миграции>
    Ответ написан
    Комментировать
  • Где нужно писать миксины, общие для нескольких приложений?

    @deliro
    Я храню в core/mixins.py
    Ответ написан
    Комментировать
  • Где нужно писать миксины, общие для нескольких приложений?

    sim3x
    @sim3x
    строгого определения нет
    core/views.py
    common/views.py
    progectname/common_views.py
    Ответ написан
    Комментировать
  • Где находить open source проект Java для новичка?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    Нигде.
    Open Source не для новичков.
    Все эти хипстерские отзывы в стиле - пилите проекты на гитхаб и работодатели сами за вас хвататься будут - полный бред.
    Не тратьте время. Ищите стразу стажировку у работодателей.
    Ответ написан
    1 комментарий
  • Как заполнить поле slug автоматически через форму?

    @FireGM
    У модели Advert переписать метод save.
    Я обычно пользуюсь библиотекой slugify
    Получается что-то вроде этого
    from slugify import slugify
    
    class Advert(models.Model):
        region = models.CharField(max_length=32)
        city = models.CharField(max_length=30)
        category = models.TextField()
        title = models.CharField(max_length=32)
        description = models.CharField(max_length=900)
        photo = models.ImageField(upload_to='')
        phone_number = models.CharField(max_length=11)
        date = models.DateTimeField(auto_now_add=True, null=True)
        slug = models.SlugField(unique=True, null=True, blank=True)
    
        def __str__(self):
            return self.title
        
        def save(self,  *args, **kwargs):
            self.slug = slugify(self.title)
            return super(Advert, self).save(*args, **kwargs)
    Ответ написан
    Комментировать
  • Как заполнить поле slug автоматически через форму?

    un1t
    @un1t
    Ответ написан
    Комментировать
  • Для решения каких задач нужен Django Rest Framework?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Опишу одно из применений REST-фреймворка. Вот написали вы корпоративное приложение. А потом захотели чтобы и из мобильных приложений функциональность БД вашего приложения была доступна в софте на java например. Вот для "скрещивания ужа с ежом" - то есть для организации работы мобильного приложения на java с вашей базой на Django, наиболее удобным будет использование REST-интерфейса.
    Через REST-интерфейс будут доступны все операции с вашими моделями - авторизация, выборки, редактирование данных, и прочее, с использованием наименьшего количества телодвижений.
    Ответ написан
    Комментировать
  • Как в django CVB ListView вывести данные из другой модели?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    Контекст в шаблон передаете?
    Так нужный контекст уже и так в шаблон улетает:

    {% for obj in objects_list %}
       {% for img in obj.modela_set.all %}
          {{ img }}
       {% endfor %}
    {% endfor %}


    Если это нужно делать именно во вьюхе - получайте список объектов в get_queryset(), и там добавляйте какие угодно поля.
    Ответ написан
    Комментировать
  • Как вывести на экран данные из базы?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Если вам это необходимо для отладки, то лучше запустить django-shell командой python manage.py shell из каталога проекта и выполнять любые запросы в ней. Никакой лишний вывод вас беспокоить не будет и "die()" не понадобится.

    Чтобы получить список всех атрибутов класса можно использовать встроенную функцию dir(). Чтобы получить значения атрибутов объекта, используйте встроенную функцию vars().

    from django.contrib.auth.models import User
    user = User.objects.first()
    vars(user)


    {'_password': None,
     '_state': <django.db.models.base.ModelState at 0x7871fd0>,
     'date_joined': datetime.datetime(2013, 12, 12, 6, 6, 58, tzinfo=<UTC>),
     'email': 'user@domain.com',
     'first_name': 'Сергей',
     'id': 1,
     'is_active': True,
     'is_staff': True,
     'is_superuser': True,
     'last_login': datetime.datetime(2016, 3, 31, 8, 1, 59, 780493, tzinfo=<UTC>),
     'last_name': 'Горностаев',
     'password': '<secret>',
     'username': 'gornostaev'}
    Ответ написан
    1 комментарий
  • Стоит ли сейчас учить C# и .NET?

    @766dt
    Мой совет такой - не разбрасываться по языкам, а выучить один до такой степени, когда сам язык становиться не так уж и важен, а новым языком можно начать пользоваться, прочитав пару тонких книжек. Python для этой цели отлично подходит, на мой взгляд.
    Ответ написан
    2 комментария
  • Что будет перспективней в данном случае?

    ncix
    @ncix
    Предприниматель
    Есть ли смысл менять Python на php работать с ним?
    Вопрос не совсем корректный - вы не меняете, а дополняете свой "стек" новым языком.
    Двигайте туда где интересно. И поищите работу в интернете, если локально во Владе с этим напряг. Английский прокачайте немного.
    Мой вам совет - не бойтесь новых и абсолютно вам неизвестных языков, фреймворков и технологий. После 2-3 языков остальные пойдут уже очень легко, и будут выглядеть вариациями одних и тех же общих принципов. То же самое и с фреймворками.
    Я за 12 лет в программировании овладел профессионально VB, Delphi и SQL, потом за пару лет С++ и Qt, затем за 3 месяца Java/ADT (Android), сейчас вот без проблем развиваю в себе PHP и JS, посматриваю с любопытством на AngularJS. Кроме того параллельно занимаюсь контроллерами - начиная от Arduino с его любительским фремворком и до голого С и даже ассемблера.
    И чем больше охватываю технологий тем проще дальше развиваться.
    Ответ написан
    5 комментариев
  • Как устанавливать модули Django на VPS?

    @deliro
    Этот твой хостинг просит 425 рублей в месяц за 400 мгц ЦП, 256 оперативы и 5гб HDD (не SSD) ещё и нет доступа к системе? Вали с него :)
    Ответ написан
    6 комментариев
  • Как эффективно изучать angular js?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    1) продолжаем учить "ванильный JS", паралельно почитывая про babel, es2015 и т.д.
    2) когда мы ищем информацию в интернетах - учитываем что сейчас актуальная версия ангуляра - 1.5, второй ангуляр в бете, так что 90% информации устарело. Я даже больше скажу - даже официальная документация устарела, обновленный вариант сможете найти на github проекта в пул реквестах.
    3) https://github.com/gdi2290/ngExam - рекомендую этот список тем того, что вам надо знать про ангуляр (ну и не только).
    4) https://github.com/AngularClass/NG6-todomvc-starter - тут я попытался собрать полезные статьи на тему что надо учить и как + пример маленького современного приложения. Так же в ишусах к NG6-starter обсуждается как лучше его готовить.
    5) https://habrahabr.ru/post/277087/ - про angular 1.5 и то как я готовлю ангуляр.

    Ну и так же не стоит пренебрежительно относиться ко всяким реактам и эмберам - идеология у всех приблизительно схожа, все крутые чуваки юзают компонентный подход (потому что это удобно и логично для проектирования интерфейсов), у всех примерно одинаковое виденье по поводу data-flow в приложениях и т.д. Так что с ними ознакомиться тоже можно, у реакта чуть больше расписано про компоненты например.

    Ну и да - обязательно прочитать документацию к ангуляру. Возможно не всю сразу но базовые понятия что бы раскрыть. И разобраться с тем что значит "декларативное представление".
    Ответ написан
    4 комментария
  • Почему стремление к упорядочиванию приводит к большей энтропии и отнимает силы?

    @di23
    Периодически меня, как и вас, клинит на теме упорядочивания всего.

    Что я только не пробовал, что я только не читал и чего я только не делал. Иногда это было даже циклически, сначала бросался к одному методу, потом переходил на другой, потом на третий, а затем опять возвращался к первому. И так всегда, на протяжении 5 - 6 лет, точно уж и не помню.

    Сейчас пришел к выводу что лучшая система та, которая работает, работает легко, непринужденно и естественно, как правая рука. И боюсь, для вас сейчас будут плохие новости... Это означает, что упорядочивание всего - неэффективно и расточительно.
    Мозг и наш в целом организм - это не математика, а биология. Связи строятся хаотично. Эффективная цепочка становится крепче. Там где связь непрочная ищутся другие пути, как река находит свое русло, хоть оно и извилистое, но для реки данный путь является наиболее эффективным. Надеюсь, улавливаете мою мысль.
    Идем дальше. Ввиду того что связи строятся хаотично, не стоит насильно принуждать свой мозг работать по той или иной технике. Техника должна помогать, а не крушить ваши сформированные процессы. Принимайте то, что наиболее эффективно работает, пусть даже с виду это будет хаос. Вашему мозгу виднее, что хаос, а что нет. Совершенствуйте все постепенно, медленно, оттачивая процессы.
    По сути вы создаете гибрид, который работает только с вами и вашим мозгом. Не заменяя ваш мозг, а как бы является его продолжением, дополнительными нейронами или конечностями, которыми можно шевелить.

    Если уйти из абстрактного мира, в реальный. Это означает что у вас будет куча различных приложений, помогающих вам в повседневных делах, не удивительно если у вас будет сразу несколько ТуДушек.... Сейчас посчитал сколько их у меня, оказалась 4 штуки. Причем все они выступают также и хранителями информации. А сколько разнообразных хранителей информаций я использую... уж лучше и не считать.
    Причем все это эффективно работает, нужная инфа находится крайне быстро, несмотря на внешний хаос. Все это потому что мой мозг врос в систему и стал неотъемлемой его частью. Как пароль, как ключ, как процессор обрабатывающий хаос и упорядочивающий его в уме.

    Вот собственно как это работает у меня. Надеюсь "метафизики" достаточно в моем посте и вы ею насладились. ))) Я старался. )
    Ответ написан
    Комментировать