Game development.
Контакты

Достижения

Все достижения (31)

Наибольший вклад в теги

Все теги (87)

Лучшие ответы пользователя

Все ответы (166)
  • По какому принципу создавать приложения django?

    vechnoe
    @vechnoe
    Tornado, Django, Postgres, Asyncio, Clojure
    Сначала вы должны поставить задачу. Отталкиваясь от конкретной задачи, вы строите набор приложений. Вот пример из реальной жизни (интернет-магазин):

    core -- все что относится к главной странице сайта, и т. д. :
    orders
    search
    shopping_cart
    news
    billing
    docs
    cabinet

    Каждое приложение должно делать хорошо только одну вещь (согласно идеологии UNIX). Компонуя приложения (модули) с относительно простой логикой, можно построить сложную систему. И такие модули проще тестировать.

    Моделей может быть в каждом приложении много, а может быть и одна. Все зависит от структуры данных, которые должны обрабатываться приложением. В каждом приложении во views.py кладете контроллеры (view), которые относятся непосредственно к отображению страницы. Бизнес-логика не должна быть в контроллерах. Всю логику выносите в функции в отдельный файл, например utils.py или по названию функционала, например cool_vk_parser.py, а потом импортируете, где нужно. Вся логика которая связанна напрямую с данными кладите в методы модели (например get_cart_items_count).

    Также в каждом приложении должен быть модуль с тестами tests.py для тестов именно этого приложения.

    UPD Итак, структура приложения джанго (* -- опциональные модули):

    my_app /
        models.py -- модели
        views.py -- view для отображения страниц
       * admin.py -- описываем отображение модели в админке
        urls.py -- урлы
       * forms.py -- формы
       * validators.py -- валидаторы форм 
       * middleware.py 
       * tasks.py -- задания для celery
        tests.py -- тесты
       * handlers.py
       * utils.py
       * templatetags/ -- теги для шаблонов
            my_tags.py
        migrations/ -- миграции (создается автоматически при миграции)


    UPD2: Структура всего проекта:
    UPD3: Added .env
    project/ 
        .env/  # Каталог виртуального окружения. Нужно прописывать в .gitignore
        src/
            apps/
                one_app/
                two_app/
             static/
                 images/
                 fonts/
                 css/
                 js/
              templates/
                  # Директории шаблонов по названию приложений
                  one_app/
                  two_app/
                  base.html  # базовый шаблон
                  index.html # шаблон главной
        media/ # для пользовательских файлов. Создается автоматом. Прописывать в .gitignore.
        urls.py 
        settings.py
        requirements.py # зависимости проекта
        .gitignore # Прописываем сюда все,  что не должно попасть в репозиторий
    Ответ написан
  • Как на django создавать интернет магазин?

    vechnoe
    @vechnoe
    Tornado, Django, Postgres, Asyncio, Clojure
    У нас есть модели: Товар, Корзина, Элемент Корзины, Пользователь.
    Модель Корзина привязана к модели Пользователь (через foreign key).
    Модель Элемент Корзины также привязана к модели Пользователь (через foreign key).
    Модель Товар также привязана к модели Элемент Корзины (через foreign key).
    В модели Корзина есть поле m2m для элементов корзины.

    Когда добавляете товар в корзину, вы добавляете элемент корзины (со связанным
    товаром), а также указываете количество товара.
    Делаем ссылку на корзину и по ссылке выводим содержимое queryset с
    элементами корзины. Открываем конкретный элемент корзины (DetailView).
    (Для простоты не будем трогать автоматические платежные системы, пусть будет наложенный платеж).
    Есть кнопка -- купить. После нажатия на нее создается экземпляр модели Заказ (со статусом:
    неоплачен, оплачен, готов к отправке, в дороге, получен). И при сохранении модели отправляется
    email и сообщения менеджеру (который привязан к Пользователю) и самому пользователю с информацией
    о заказе.

    Вариантов построения инернет-магазина может быть много, нужно отталкиваться
    от конкретной задачи. Лучше всего использовать Джанго в качестве бэкенда вместе
    с rest framework. А на фронтенде Angular. Это поможет избежать огромного
    количества лапшекода на JQuery, когда будете добавлять динамику на страницу
    (в последнем проекте это был ужас-ужас).

    Я бы советовал использовать поменьше 'батареек'. Очень важно написать все самому,
    если для вас это первый интернет-магазин.
    Ответ написан
  • Используете ли вы витамины для "мозга"?

    vechnoe
    @vechnoe
    Tornado, Django, Postgres, Asyncio, Clojure
    Если колени здоровые, то велосипед. Километров по 30 в день как минимум. Снимает стресс, дает физ нагрузки + здоровый сон. Заметил по себе, когда стал регулярно заниматься, то прошла апатия, которая появляется от долгого сидения за компьютером. Для мозга очень важны физические нагрузки, т.к. улучшают кровообращение. А для умственной работы физический тонус -- самая важная вещь.
    Ответ написан
  • Какие книги стоит прочитать новичку в веб-разработке?

    vechnoe
    @vechnoe
    Tornado, Django, Postgres, Asyncio, Clojure
    Я бы вам не рекомендовал идти в веб-разработку. Через три года много воды утечет. Рынок раздут, много новичков, которые приходят в ИТ за деньгами, многие не знают чем абстрактный класс отличается от интерфейса и чем очереди отличаются от стеков. Вам нужно прежде всего:
    1. Прочитайте книгу Петцольда: "Код - тайный язык информатики"
    2. Освоить линукс. Без него никуда.
    3. Разговорный английский. Если нет этого навыка, успешно работать вы не сможете.
    4. Математика. Как там у вас с ней? Если плохо, все силы на нее и на предыдущий пункт
    5. Теория алгоритмов и структуры данных. Можно начинать с видео, если ничего непонятно, искать книжки попроще, на ютубе много видиео с доходчивым объяснением. Есть еще много визуализаций. В целом, на алгоритмы вы потратите больше всего времени
    6. В процессе изучения алгоритмов вам нужно выучить какой-либо язык, лучше Джава. Неплохие лекции есть от Якова Файна по Java для новичков. Есть на рутрекере.


    И еще.

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


    Если будете знать все то,что написал выше, работа найдет вас сама.
    Ответ написан
  • Что необходимо знать о Python для того, чтобы получить свой первый проект?

    vechnoe
    @vechnoe
    Tornado, Django, Postgres, Asyncio, Clojure
    Прежде всего, выучить испанский, а то в ЛА на англоговорящих гринго смотрят криво. Если вы хотите получать денежку, то не о математике нужно думать, а о том, как устроится джуниором хоть куда-то. Следовательно, прежде всего -- это веб разработка (к которой душа не лежит). Если веб-разработка -- значит Джанго, по этому фреймворку наибольшее количество вакансий по Питону. Если веб разработка -- значит еще и JS, без него вы не устроитесь никуда. Если Джаваскрипт -- это знание Angular или какого-то SPA фреймворка. И это работа за еду. Когда поднакопите опыта в кодинге, тогда можно уже смотреть на более сложные проекты. И тогда уже математика, физика и прочая топология.
    Ответ написан

Лучшие вопросы пользователя

Все вопросы (37)