Django — Вопрос по PythonDjango


Содержание

Создание первого приложения на Django, часть 1¶

Давайте учиться на примере.

В этом уроке мы расскажем о создании базового приложения для голосования.

Он будет состоять из двух частей:

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

Мы предполагаем, что вы уже установили Django . Вы можете узнать, установлена ли Django и какая версия, выполнив в командной строке следующую команду (указывается префиксом $):

Если фреймворк Django установлен, вы увидите номер версии. Если нет, вы получите сообщение об ошибке «Нет модуля с именем django».

Это руководство написано для Django | version | и требует как минимум версию Python 3.5. Если версия Django не совпадает, вы можете обратиться к учебнику для вашей версии Django или обновить Django до последней версии. Если вы используете более старую версию Python, прочитайте Какие версии Python можно использовать с Django? , чтобы найти совместимую версию Django.

Смотрите Как установить Django , чтобы узнать как удалить старые версии Django и установить последнюю версию.

Где получить помощь:

Если у вас возникли трудности с этим руководством, можно написать сообщение в django-users или зайти в чат #django on irc.freenode.net, где другие пользователи Django могут вам помочь.

Создание проекта¶

Если вы раньше Django не использовали, то необходимо позаботиться о начальной настройке. А именно, необходимо автоматически сгенерировать определенный код, который устанавливает Django project — набор настроек для конкретного экземпляра Django, включающий в себя конфигурацию базы данных, специфичные для Django опции специфичные настройки для приложения.

Выполните в терминале в командной строке cd : смену каталога на тот, в котором вы хотите хранить код проекта, затем запустите следующую команду:

Это создаст каталог mysite в текущем каталоге. Если этого не произошло, то смотрите Problems running django-admin .

Не рекомендуется в качестве названия проекта названия встроенных компонентов Python или Django. Это значит, что следует избегать использования таких имен, как django (будет конфликт с самим фреймворком) или test (будет конфликтовать со стандартным пакетом Python).

Где этот код должен находится?

Если бэкграунд написан на простом старом PHP (без использования современных фреймворков), вы, вероятно, привыкли размещать код в корневом каталоге веб-сервера (например, /var/www ). С Джанго так лучше не делать. Не стоит помещать какой-либо Python код в корневой каталог веб-сервера, потому что существует риск, что он может стать доступным для просмотра. Это не очень хорошо для безопасности сервера.

Размещайте свой код в каком-либо каталоге вне корневого каталога сервера, например /home/mycode .

Давайте посмотрим на результат выполнения команды startproject :

Разберем, для чего нужны эти файлы и каталоги:

  • Внешний каталог mysite/ — просто контейнер вашего проекта. Это имя ничего не значит для Django, поэтому его переименовать как угодно.
  • manage.py : утилита, позволяющая взаимодействовать с проектом различными способами. Вы можете прочитать все подробности о manage.py в django-admin and manage.py .
  • Внутренний каталог mysite/ это Python модуль вашего проекта. Его название вы будете использовать для импорта чего-либо из этого модуля (например, mysite.urls ).
  • mysite/__init__.py : пустой файл, который сообщает Python, что этот каталог должен рассматриваться как пакет Python’а. Если вы новичок в Python, прочитайте больше о пакетах в официальной документации Python.
  • mysite/settings.py : Конфигурация и настройки проекта Django. В Django settings рассказано все о том, как работают настройки.
  • mysite/urls.py : указание URL проекта на Django, можно сказать, что это «оглавление» вашего проекта. Прочитайте больше информации о URL в URL dispatcher .
  • mysite/wsgi.py : Точка входа для WSGI совместимых веб-серверов для работы с проектом. Смотрите How to deploy with WSGI для уточнения деталей работы.

Сервер разработки¶

Давайте проверим, работает ли ваш проект Django. Перейдите во внешний каталог mysite , если вы этого еще не сделали, и выполните следующие команды:

Почему Python и Django

После ряда вопросов дополню предыдущую простынку ответами на вопросы ряда “почему [не] XYZ”.

По себе знаю, профессиональная деформация меняет угол оценки людей. Если день за днём 90% круга общения могут читать исходники, упоминать big O, ностальгировать по ZX Spectrum и гадать про Эльбрус, забываешь очевидное — другим людям бывает сложно даже AND от OR отличить. Они умеют включать компьютер, гулять в интернете, писать письма. Всё. Это раз.

Программирование не является естественной деятельностью человека. Фактически никакой предварительный опыт к ЭТОМУ не готовит. Сугубо умственное самонасилие, структурирующее мысли так, чтобы после конвертированиях оных в примитивные инструкции процессора что-то заработало. Вспомните, как мучительно застывал народ перед первыми банкоматами. Итическая мощь цивилизации, какую же кнопку нажать, чтобы денег дало. Левую или правую? Или вот эту посерёдке? Аааа, оно жужжит! Вот первый опыт разработки круче банкомата.

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

Итак, формулируем задачу.

Дано: обычный человек без опыта, но умеющий пользоваться компьютером. Мощность мозга примерно на уровне хорошиста с дипломом. Инициативность и воля на уровне “готов оторвать жопу от дивана, чтобы жить иначе”. Снижать планку не считаю интересным — люди с тройками и двойками, продавливающие телами печку в надежде на чудо… тоже чего-нибудь как-нибудь найдут своими методами, пусть их. Мне такие тоскливы, потому избегаю. Повышать же планку неспортивно, современный толковый физмат применение себя уже во время учёбы может найти без проблем.

Задача обширнее, многоэтапная и на века:

  • Попасть на высокооплачиваемую (относительно другой “обычной”) первую работу.
  • Удержаться год на этой работе.
  • Полученными знаниями и опытом значительно расширить выбор следующих мест и вариантов работы.
  • Самостоятельная учёба. Во-первых, проверка мотивации — не тянешь, значит, не хочешь, пока-пока. Во-вторых, не тратимся на бесполезные курсы, повторяющие то же, что есть либо бесплатно, либо за весьма меньшие суммы.
  • Уложиться в год по два-три часа в день. Вполне возможно, человек уже работает или учится [на кассира в свободной кассе с высшим филологическим]. А года хватит на всё. Если потребовалось больше, что-то не так.
  • Москва. Просто трусливый выбор, т.к. понятия не имею, как джуниору найти работу в Красноярске или в Бахчисарае.

Временные затраты: при режиме будень(30м чтение + 90м практика) и выходной(60м чтение + 120м практика) получаем на год с округлениями… около 250ч чтения и 600ч практики, если я не обсчитался по производственному календарю.

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

Go и Rust отметаем — хватит и того, что работы мало. Swift мог быть вариантом, но мобильная разработка специфична и всё то же количество вакансий. C / C++… хороши, но для изначально профессиональных джуниоров, я бы сказал — многое надо знать дополнительно, на собеседовании спросят и про разный low level, а у рандомной репки беда. Ну и снова вакансий так себе. Есть ещё кластер всякого вокруг Microsoft (C#, например), но у меня в этом месте лакуна, а гадать не хочу. Может, у них всё офигительно. С другой стороны, учебной литературы на порядок меньше, да и платформа ограничивает вакансии. У Ruby всё плохо с количеством информации, вакансии тоже не очень. Остаются Java, JavaScript и Python.

Java великолепна на рынке труда. Работу найдёт даже джавист с тремя судимостями, опытом в месяц, образованием в два класса церковно-приходской в деревне староверов, глазами наркомана и повадками сомалийского гопника. Но это не язык для начинающих с самостоятельным обучением. Чтобы начать на ней писать хотя бы похоже на правильную Java, надо прям вот долго и с ментором, ещё и помнить тонну нюансов. Собсно, потому количество литературы по ней огромно, но доля учебников для самых маленьких исчезающе мизерная. Маленьким этот язык не дают.

JavaScript тоже прям сверкает вакансиями. И материала много. И в каждой щели он. И учить просто, да ещё снежинки с часиками на экране. Одна фигня: рынок JavaScript — это рынок фронтенда с редкими вкраплениями “мы пишем на Node.js” (скорее, на Ноде будете вспомогательные скрипты фронту писать). Иногда в дискуссиях с матёрыми джаваскриптизёрами начинается выдвижение списка софта на Node.js, но в сравнении с Java / Python… вышла шаланда под ГРКР “Москва”. Также фронтенд со старта не учит многому хорошему (нафига снежинкам алгоритмы, например?), да и вообще ограничен в качестве вакансий. Оптимистично говоря, бекендер может вчера писать банковский софт, сегодня геймдевить, завтра машинное обучение в Hadoop ломать. Фронтендер вчера верстает страничку для банковского софта, сегодня страничку для игры, завтра страничку для админки машинного обучения. Утрирую, да. Но и нет. При этом просто знакомить с разработкой на примере JavaScript отлично.

Python достаточен вакансиями. У него всё замечательно с литературой (даже детской хватает). Его берут учебным языком в вузах — современный BASIC, чё, вона как SICP им… не подберу глагол. Он нередко приветствуется вторым языком. Переживает второе рождение в ML. Многолетние legacy на нём ещё ваших внуков пережить могут. И для простых задач он простой как ведро с краской. И, что очень важно в контексте, питонистам не надо знать ничего (заранее отключить комментарии к эссе, шоле…)! Плюсовиков погоняют по low level и OS. Джавистов по ООП, шаблонам, API и GC, придавив многопоточностью и “ну, теперь давай про базы данных”. Этих, которые JavaScript, будут спрашивать про React во Vue.js с AngularJS в соусе из jQuery в Internet Explorer на семиугольном мониторе. Питонистов не спрашивают ни о чём, окромя Python и одного из фреймворков, да и тому научат. Лишь бы лапками по кнопкам нужным попадал в первый год. Ну не прелесть? А уж освоить и запомнить за год Python так, чтобы от зубов отлетал, не хитрое дело.

Потому и Python. Что, впрочем, не помешает в дальнейшем изучить другой язык, было бы желание. Ещё отмечу наблюдение из практики: очень, очень часто питонисты (как живые люди, так и резюме) — выходцы из тестировщиков, 1С, поддержки и прочих мест, в коих разработка на зачаточном уровне, если вообще есть. Python — их первый и нередко единственный язык. Они смогли, сможет и наша репка.

Подчеркну всё-таки важное. Начинающему следует не просто найти первую работу, но за два года учёбы и работы открыть себе двери в разные ветви разработки. Ведь лучше работать тем, что нравится, а не только тем, что умеешь. В Python легко войти и с Python легче пойти дальше в девопсы, в админство, в web, в ML, в сбор данных и т.д. Когда первый голод удовлетворён (ура, я пишу программы! ура, мой первый миллион [рублей]!), бывший начинающий пойдёт дальше. И вот тут должны выстрелить дополнительные знания и появившаяся привычка учиться. В этой же точке привычка быть бездумной обезьяной с сотней CtrlC/CtrlV на пальцах закроет ряд вариантов, я уверен.

Цукерберг рекомендует:  Распаковываем zip архив средствами PHP

А вот это не подчеркну, но отмечу [ещё раз]: разработка софта очень толерантна к разным людям разного уровня. Войти в разработку можно миллиардом путей. Если у начинающего есть явные наклонности к несколько иной ветви развития (пусть даже ценою снижения универсальности), может хоть Fortran осваивать по аудиозаписям лекций. Фишка в доступности. Запрыгнуть на первую ступеньку может любой с желанием, волей и достаточным количеством полезных клеток в черепе.

PS. Выбор Django в качестве фреймворка объясняется просто. Во-первых, в ней (нём?) есть всё для обучения, ничего дополнительного ставить не надо. Во-вторых, количество вакансий с упоминанием Django довольно велико — прям сейчас 200+, например. В-третьих, после Django освоить другое не так уж сложно.

© — Powered by Jekyll & whiteglass — Subscribe via RSS

Веб-фреймворк Django (Python)

На этой странице


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

Требования

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

Рекомендуется базовое понимание концепций программирования и языка Python, но это не обязательно для освоения основных понятий.

Примечание: Python является одним из самых доступных в чтении и понимании для новичков языков программирования. Тем не менее, если вы захотите глубже понять этот модуль, в Интернете сейчас доступны многочисленные бесплатные книги и учебные пособия (новички в программирование возможно захотят посетить Python for Non Programmers на вики-страницах python.org).

Руководство

Задания

Следующее задание проверит ваше понимание того, как создать сайт с помощью Django, как описано в руководствах, перечисленных выше.

DIY Django мини-блог В этом задании вы будете использовать некоторые знания, которые вы узнали из этого модуля, чтобы создать свой собственный блог.

django

Я использую Django с mod_python на удаленном сервере и должен добавить некоторые журналы. Я пытаюсь добавить журнал тестов, в settings.py…

Я делаю логин / пароль формы: модель: >

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

У меня есть код, написанный на python django для разбора url-адреса и отправки данных тега на другую html-страницу, поэтому я…

Я думаю, что этот вопрос очень хромой, но я на самом деле все перепробовал перед публикацией. Все вопросы, похожие на…

Я использую JSONText для загрузки вызова JSON в моем Jquery, но по какой-то причине запрос не выполняется, Вот код, urls.py…

Привет, я пытаюсь добавить внешний ключ к одному из моих классов моделей. По какой-то причине этот ключ, в частности, вызывает…

В Django 1.6 я расширил пользовательскую модель django с моей собственной моделью, такой как >

Я хотел бы исключить некоторые объекты из моего queryset и задавался вопросом, как я могу передать список объектов в Django…

Я работаю над проектом Django для медицинской команды и должен включать приложение календаря для управления назначениями пациентов. Как правило, календарь…

В настоящее время я работаю над системой оплаты в приложении Django и решил использовать Zebra для подключения к Stripe. Я…

У меня есть метод в моей модели, который увеличивает поле моего объекта Django и возвращает значение, но я не могу…

Я получаю следующую ошибку, когда когда-либо я обращаюсь к url-адресу, кроме /home. Page not found (404) Request Method: GET Request…

Моя проблема похожа на несколько других вопросов, касающихся обработки полей M2M при сохранении объекта, например. Django доступ к полям ManyToMany…

Я использую Userena, и в моем классе профиля я добавил ImageField, теперь я получаю OperationalError, столбец не существует каждый раз,…

Я новичок в Django, и я изучаю модели на данный момент. У меня есть две таблицы в бэкэнде, одна дочерняя…

I need to get earnings details for user from YouTube Я следовал ниже url, чтобы получить доход https://developers.google.com/youtube/analytics/sample-requests#Content_Owner_Reports я передал…

У меня есть немного путаницы, понимая, как вытащить имя пользователя из url. Вот мои взгляды. ПРОСМОТР def profile_listview(request, username, template_name=userena_settings.USERENA_PROFILE_DETAIL_TEMPLATE,…

У меня есть приложение, которое включает в себя некоторые модели. Все модели на моем представлении представлены одинаково (таблица для модели,…

Я использую Django в качестве бэкенда и C# в качестве frontend. Django обеспечивает сериализацию из моделей в json. Мой вопрос…

У меня есть модель базы данных с положительным целым столбцом с именем ‘weight’. Есть также другие столбцы, но они не…

Я учусь основам.js от lightweight django, и я не могу получить функцию ниже от запуска события по умолчанию. ниже приведен…

Ive пытается создать проект django, который имеет пользователей, и эти пользователи могут добавлять названия книг, которые они создали. Только пользователь…

Можно ли фильтровать набор запросов Django по свойству модели? у меня есть метод в моей модели: @property def myproperty(self): [..]…

Я посмотрел в QUESTSET API и попытался найти ответ. Но я думаю, что я неправильно истолковываю различие между менеджером и…

Это не очень актуально для моего вопроса, но это дает некоторый фон: я сделал карту, используя Mapbox API. Затем я…

Я пытаюсь отобразить поля для нового поставщика в форме, но у него есть ошибка ‘поставщик’ объект не имеет атрибута ‘id’….

У меня есть поле с отношениями M2M.при запуске syncdb поле с полем M2M не формируется в базе данных. вот модель…

Я не уверен, почему Django не сравнивает эти значения правильно, вот что у меня есть: <% for comments in comments…

MEDIA_ROOT и MEDIA_URL не определены в settings.py Мой models.py from django.db import models >

Я создаю серию небольших сайтов, я использую фреймворк django. Теория идет пользователь приходит на мастер-сайт, регистрируется, затем он получает свой…

Я классифицировал и модель электронной почты: >

Я пытаюсь сделать некоторый поиск haystackс whooshbackend. В моем документе у меня есть строка1234-567 и мой поиск может выглядеть так…

Я нахожусь в настоящее время в команде разработчиков, которая реализовала поисковое приложение с помощью Flask-WhooshAlchemy. Правда, мы не продумали это…

Я хотел бы импортировать библиотеку OpenSSL для использования объекта EVP_MD в Python. По этой причине я использовал sslsnoop. Однако при…

Провел весь день в поисках и надеялся, что кто-то может дать мне ответ. Кто-нибудь может посоветовать, как сделать так, чтобы…

Я получаю все связанные записи, используя пользователя.компании.все.)( Но этот запрос дает мне случайные записи из таблицы userProfile_companies. Мне нужен порядок…

Я создаю приложение Django, и теперь я в производстве. У меня эта проблема: после выполнения manage.py syncdb (все в порядке)…

Внимание: я новичок как в Django, так и в jQuery / Javascript. До сих пор, это сводит меня к чертовой…

Я использую Django CMS django-cms = = 2.4.3 Я подготовил apphook, называемый продукты. Мой cms_app.py файл: >

Я пишу API с django-tastypie. API, использующий строку запроса для фильтрации объектов. Например: если я хочу найти клиентов, которые имеют…


я делаю проект в Django я хочу вызвать терминал в другой машине, чтобы выполнить код и как я могу передать…

Я хочу добавить элемент в поле manytomany в модели django. В настоящее время новый объект тега создается, но он просто…

Я хочу настроить приложение Django auth, так как по умолчанию приложение auth не может сделать все, что нужно нашему проекту….

Мне действительно нужен кто-то, чтобы объяснить/показать мне, как я могу достичь TabularInlineотображения в консоли администратора django моего примера. Кто-нибудь может…

Я получаю результат json, и imagesдеталь не совпадает с идентификатором как: < «id»: 11 «title»:»AAA» «createday»:»2015-01-01″ «images»: [ «B_123.jpg» ],…

Я хочу использовать websockets в проекте django, но я не могу найти ни одного приличного приложения/фреймворка, который работает с django,…

У меня есть длинный список элементов, которые я ищу с django-autocomplete-lightполем, с автозаполнением, определенным как таковой: >

Я только что создал новый вид Django. Я добавил путь к urls.pyIn среди других моих рабочих URL-адресов: url(r’^events/new/$’, ‘crewcal.views.new_event’, name=’new_event’),…

Какой самый быстрый способ в Python (Django) для создания JSON на основе Django queryset. Обратите внимание, что разбор его в…

Я делал страницы профиля пользователя для моего сайта django, но я не могу понять, где моя логика неверна в следующей…

Я запускаю сервер Ubuntu с uWSGI и Django для моих веб-приложений. У меня uWSGI работает в режиме императора, так что…

Я пытаюсь настроить демо-проект jfxtras, где он будет показывать только повестку дня, но когда я пытаюсь запустить приложение, я получаю…

У меня есть модели ниже >

Во-первых, я хочу, чтобы топ-250 пользователей и обновить их top = 1 users = MyTable.objects.order_by(‘-month_length’)[0: 250] for u in users:…

У меня есть модель со многими полями. Мне нужно запускать код только при изменении двух определенных полей. Я знаю, что…

Запрещенная (403) проверка CSRF не удалась. Просьба прервана. Причина отказа: CSRF cookie не установлен. Я получаю вышеуказанную ошибку, и есть…

Итак, у меня есть некоторая шаблонная логика, которая создает HTML-форму для каждого ключа из словаря, который я передаю его :…

Я следую учебнику Heroku под названием Python-Get Started, но он не работает. Я использую Windows 7 и виртуальную среду под…

Я использую хранилища и приложения django-cms с серверной частью azure-storage на моем сайте Django. Хранилище работает отлично, так как, когда…

Пытаясь самостоятельно принимать readthedocs внутренне и имел очень небольшой опыт работы с Django. Я следовал всем шагам на readthedocs (созданный…

Я разрабатываю приложение python django для своего проекта. Из-за природы одного из моих приложений, мне нужно запустить определенный сценарий в…

Я хочу добавить еще одно поле в UserCreationForm, которое будет показано в RegistrationForm, я видел несколько примеров на stackoverflow для…

Я надеюсь построить запрос Django к моей модели, которая позволяет моему фильтру изменяться по мере выполнения запроса. У меня есть…

Я пишу файл xstl. Я хочу установить минимальный и максимальный порог для значений в XML. Допустим, у меня есть

У меня есть представление django, которое дает шаблон shared_user_ >

Я новичок в Django и хотелось бы иметь ссылку в панели навигации под названием «Мой счет», при нажатии на которую…

Это может быть хромым вопросом, но как использовать первичный ключ в качестве значения по умолчанию для атрибута? Это мой models.py:…

Я новичок в Django и я следую за пачкой. Проблема в том, что tuto использует Sqlite, но я хочу использовать…

Я работаю над проектом с использованием Django-1.1.1, который устарел и больше не доступен для потребления. В результате, мы обдумываем, чтобы…

Я пытаюсь сделать Django ajax HttpResponse json с помощью medium-editor . view.py def test(request, union_ >

Я следил https://docs.djangoproject.com/en/1.5/topics/auth/customizing/#extending-the-existing-user-model чтобы добавить ManyToMany поле для того, что игры пользователь играл. class Profile(models.Model): «»» Extended authentication profile storing…

Когда я запускаю M script как этот на ubuntu как root, он работает: ./my_celery.sh Но когда он работает с выскочкой,…

В настоящее время я учусь использовать Django. Я хочу сделать веб-приложение, где вы как пользователь можете присоединиться к группам. Эти…

Наши запросы: Мы планируем интегрировать два проекта django A и B, и у нас есть строка меню в проекте A,…

В моем случае у меня есть возможность создавать эскизы изображений и выполнять некоторую постобработку перед их загрузкой на сервер (Amazon…

Как задать начальное значение поля в автоматически сгенерированной форме для добавления экземпляра модели Django до отображения формы? Я использую Django…

могу ли я запустить сайт django (Python framework) с xampp на windows? Пожалуйста, ведите меня.

Цукерберг рекомендует:  Садиться и писать код

Мне кажется, что все, что может сделать контекстный процессор, может сделать промежуточное ПО. Так в чем смысл контекстных процессоров? Они…

Я пытаюсь добавить данные профиля внутри UserResource, но не могу найти способ сделать это. Я немного подправил код, найденный в…

Я использую БД django и postgresql для разработки моего проекта, БД имеет 3 схемы. И я пишу raw quires, используя…

Я писал unittest и заметил, что не могу назначить объект datetime моделям.DateTimeField без потери сведений о времени. I. e: class…

Исторически я разработчик django. Я внезапно оказываюсь в положении, когда я буду делать кучу программирования rails. Я просмотрел документы rails…

Скажем, у меня есть следующие миксины, которые накладываются друг на друга, касаясь dispatch(): class FooMixin(object): def dispatch(self, *args, **kwargs): #…

Вопрос по Django.

Возможно ли работать с базой самостоятельно, или только через Database API (http://www.djangoproject.com/documentation/db_api/)?

Сейчас я пишу на Сatalyst (http://www.catalystframework.org), многие говорят что Django перспективнее, патаюсь сравнить. Может кто сравнивал?

В Сatalyst я могу работать с базой как мне угодно.

Re: Вопрос по Django.

Re: Вопрос по Django.

Re: Вопрос по Django.


А как вообще, стоит переходить на Django?

Re: Вопрос по Django.

Какие у тебя задачи, какие приложения пишешь?

Re: Вопрос по Django.

Смотря с чего и для чего. Если с PHP или, о ужас, Perl — то стоит, однозначно, даже думать нечего. И неважно Django, TurboGears, Pylons или кто там ещё. Если тяжёлая артиллерия — ASP.NET или Java компания (JSF, Struts, Spring) — то, понятно, масштаб разный и сравнивать их нельзя. Да и не думаю, что может возникнуть такой вопрос. По мне Python, даже как просто язык, в отрыве от web — очень интересная вещь. И Django — просто сказка какая-то. А всё вместе — лучшее, что случилось со мной за последнее время.

Re: Вопрос по Django.

> Смотря с чего и для чего > Какие у тебя задачи, какие приложения пишешь?

С Perl, PHP. Задачи/приложения типа интернет магазина с 10 посетителями в секунду.

Re: Вопрос по Django.

> 10 посетителями в секунду.

Re: Вопрос по Django.

Ни в коем разе. На редкость глюкавое, убогое и замысловатое уёжище.

Re: Вопрос по Django.

Re: Вопрос по Django.

+ неизвестно, включал ли автор тестирования production режим. В другом режиме при каждом запросе полностью регенирируется конечный html.

Re: Вопрос по Django.

>+ неизвестно, включал ли автор тестирования production режим. В другом режиме при каждом запросе полностью регенирируется конечный html.

http://www.alrond.com/ru/2007/jan/25/rezultaty-testirovanija-6-frameworks/
>>Если фреймворком предусматриваются development и production режимы, то я работал с production.

Хм. тык стоит ли переходить с Perl (Catalyst) на Django (Python)?
Catalyst и Django сейчас активно развиваются.

>Ни в коем разе. На редкость глюкавое, убогое и замысловатое уёжище.
Можно поподробнее?

Re: Вопрос по Django.

Спасибо, не углядел про production. Вообщем вот результат изменений в RoR для тех, у кого времени хватает только на просмотр графиков: http://static.alrond.com/results_2test.gif

>Хм. тык стоит ли переходить с Perl (Catalyst) на Django (Python)? Catalyst и Django сейчас активно развиваются.

По ссылке на сайте в комментариях пишут, что выбор инструмента не должен зависеть от какого-то теста на производительность хелловорлда. На реальном коде картина была бы совсем иной, если учитывать характер работы перечисленных фреймворков с БД и прочим.

Re: Вопрос по Django.

>>Ни в коем разе. На редкость глюкавое, убогое и замысловатое уёжище.

Не обращай внимания — bugmaker пьян :-)

Re: Вопрос по Django.

>> Ни в коем разе. На редкость глюкавое, убогое и замысловатое уёжище.

Несомненно можно. Что именно интересует?

Re: Вопрос по Django.

>>> Ни в коем разе. На редкость глюкавое, убогое и замысловатое уёжище.

> Не обращай внимания — bugmaker пьян :-)

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

Re: Вопрос по Django.

Конечно. Глюкодел имеет в виду, что Питон — это не Лисп, и потому сосет. А Django Глюкоделу не нравится по причинам, которые он пока что не хочет излагать.

Re: Вопрос по Django.

Всё правильно, кроме одной небольшой детали. Питон даже ещё намного хуже чем нелисп.

Re: Вопрос по Django.

Ну во всяком случае чем большинство нелиспов.

Re: Вопрос по Django.

Дык ёлы-палы, я же старался.

Может, совершишь общественно полезное деяние и изложишь косяки Django, с которыми столкнулся?

Re: Вопрос по Django.

Там их слишком много, да я многие уже озвучивал в разных тредах вроде. А разве могут кому-нибудь быть интересны косеки веб-тулкита, в котором нету даже continuations?

Re: Вопрос по Django.

> да я многие уже озвучивал в разных тредах вроде.

> разве могут кому-нибудь быть интересны косеки веб-тулкита, в котором нету даже continuations?

Ты, наверное, мне не поверишь, но — да, могут 8) Вот анонимному брату интересно, да и мне тоже. Так что — просим!

Re: Вопрос по Django.

>> да я многие уже озвучивал в разных тредах вроде.


ИМХО видел, и заметил что это косяки не питона вообще а джанги в частности насколько я помню.

>> разве могут кому-нибудь быть интересны косеки веб-тулкита, в котором нету даже continuations?

> Ты, наверное, мне не поверишь, но — да, могут 8) Вот анонимному брату интересно, да и мне тоже. Так что — просим!

Анонимный брат пока не высказался, а для тебя отвечу. Самый большой касяк, делающий довольно бессмысленным перечисление остальных оных — это то, что в жданге нету даже continuations.

Re: Вопрос по Django.

> ИМХО видел, и заметил что это косяки не питона вообще а джанги

Дык это было на linux-talks

> Анонимный брат пока не высказался

Он просил подробностей — любых встреченных на практике косяков, я так думаю.

> Самый большой касяк, делающий довольно бессмысленным перечисление остальных оных — это то, что в жданге нету даже continuations.

ОК, зайдем с другой стороны — а в каких фреймворках continuations есть? (кроме лисповых фреймворков, конечно).

Re: Вопрос по Django.

>> ИМХО видел, и заметил что это косяки не питона вообще а джанги

> Дык это было на linux-talks

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

>> Анонимный брат пока не высказался

> Он просил подробностей — любых встреченных на практике косяков, я так думаю.

Подробностей много, и, во избежание замусоривания никому не нужной инфой, подождём его мнения о том, какой именно аспект его интересует.

>> Самый большой касяк, делающий довольно бессмысленным перечисление остальных оных — это то, что в жданге нету даже continuations.

> ОК, зайдем с другой стороны — а в каких фреймворках continuations есть? (кроме лисповых фреймворков, конечно).

Почему конечно? Я не пользовался другими и посему не могу знать про это. Достоверно знаю только что в джанге и пилонсе их нету, а в ucw наоборот есть.

Re: Вопрос по Django.

> ОК, зайдем с другой стороны — а в каких фреймворках continuations есть? (кроме лисповых фреймворков, конечно).

Сontinuations также есть в смолтолковском Seaside. Но смотри какая штука, вот что пишет о них автор движка: «One thing I’d like to do is reduce the dependence of Seaside on continuations — they drove a lot of the initial interest in the framework but they’re becoming (or seeming) much less important over time, and the use cases to which they’re best suited are these days often addressed with AJAX instead. Right now they’re creating an artificial barrier which stops Seaside from being ported to some dialects (like Strongtalk, Smalltalk/X and VAST) which don’t support continuations but would still benefit from a continuation-less Seaside.”

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

Re: Вопрос по Django.

>Анонимный брат пока не высказался, а для тебя отвечу. Самый большой касяк, делающий довольно бессмысленным перечисление остальных оных — это то, что в жданге нету даже continuations.

Правильно, поэтому надо пользоваться ruby on rails :-)

Re: Вопрос по Django.

Чудышко анонимное, покажи хоть одно нарушение мной законов формальной логики здесь, или уж закрой дверцу быдлореактора изнутри.

Re: Вопрос по Django.

> ты совершенно напрасно пытаешься говорить с насекомым (bugmaker) на человеческом языке: он ординарный тролль

Ты совершенно не прав, анонмный брат. Просто у Глюкодела плохой характер и. похоже, плохое настроение. А человек он явно квалифицированный.

Насчет continuations — то есть в RoR они есть, я правильно понял?

Re: Вопрос по Django.

>Насчет continuations — то есть в RoR они есть, я правильно понял?

В ruby есть, называется callcc. Сам сейчас читаю, что за зверь такой.

Re: Вопрос по Django.

Я тот Anonymous, который начал thread (не тот, который отвечал до этого).

> Подробностей много, и, во избежание замусоривания никому не нужной инфой, подождём его мнения о том, какой именно аспект его интересует.

Меня в первую очередь интересует стоит ли переходить с Perl на Python в отношении с MVC framewrorks. Я видел много высказываний о том, что у Perl нет будующего и т.п. Однако если верить тому, что обещают в Perl 6, то будующее очень неплохое. И врятли когда-либо Perl окончательно уйдет из MVC (Catalyst сейчас весьма активно развивается).

Python же сейчас быстро набирает обороты, поэтому смотрю в его сторону. Интересует он меня в большой степени применительно к MVC framewrorks. Django показывает очень хорошую эффективность, однако полагаю если граматно настроить кеширование внутри, то особой разницы между Catalyst/Django не будет.

В сторону других языков смотреть не хочется, т.к. Perl как язык меня вполне устраивает.

Re: Вопрос по Django.

Я хоть и не специалист по Web MVC-фреймворкам, а всё же отвечу :)

> если верить тому, что обещают в Perl 6, то будующее очень неплохое.

Сколько лет они это обещают? (много) И что реально сделано? (мало)

> Catalyst сейчас весьма активно развивается

> Perl как язык меня вполне устраивает

Тогда не вижу смысла в миграции.


Re: Вопрос по Django.

>Тогда не вижу смысла в миграции

Не хочется через пару лет мигрировать по причине того, что Perl не актуален.

Re: Вопрос по Django.

> Меня в первую очередь интересует стоит ли переходить с Perl на Python в отношении с MVC framewrorks.

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

> Я видел много высказываний о том, что у Perl нет будующего и т.п.

А у кого оно есть? Мы все умрём, а Лора Палмер так уже, и кому это интересно?

> Однако если верить тому, что обещают в Perl 6, то будующее очень неплохое. И врятли когда-либо Perl окончательно уйдет из MVC (Catalyst сейчас весьма активно развивается).

Если есть занятая ниша, она в одночасье не освободится, по любому для раздумий есть лет пять как минимум. Но лично я не верю что перл 6 несмотря на все ништяки будет активно подхвачен, т.е. миграции с других языков на перл скорее всего не будет. Потому что _все_ эти ништяки уже кое-где есть, и никому это особенно не помогло.

Цукерберг рекомендует:  After - Помогите решить задачку с активацией стиля псевдоэлемента

> Python же сейчас быстро набирает обороты, поэтому смотрю в его сторону.

Питон вролне уместно сравнить с бейсиком, он очень похож во многих чертах. Было время, когда на многих персональных компах бейсик был прошит прямо в биос и был самым распространённым наречием. Но из-за присущих недостатов никогда не использовался в сколько-нибудь серьёзных задачах и со временем тихо помер. Так что «набирать обороты» можно по всякому. Это опять таки зависит от решаемых задач.

> Интересует он меня в большой степени применительно к MVC framewrorks. Django показывает очень хорошую эффективность, однако полагаю если граматно настроить кеширование внутри, то особой разницы между Catalyst/Django не будет.

Джанго обладает рядом нелепостей и несуразиц и очень ненадёжен. Многие недостатки происходят от лежащего в основе его питона. Как пример, можно опечататься и использовать где-то в выражении несуществующее свойство объекта. Ошибки это не вызовет но результат работы скрита будет весьма странным и весьма тяжко будет найти эту ашыпку. При изменении модели БД нет (хотя может я не нашёл?) способа применить изменения инкрементально, нужно сностить таблицы и генерить их структуру заново. Для шаблонов страниц используется свой йазыг, такой же нелогичный, скудный и запутанный как сам питон. ИМХО эффективность будет хорошей только на совсем уж незамысловатой логике, а при росте сложности эффективность падёт очень резко. Сколько-нибудь сложную логику на питоне выразить вообще немыслимо, даже ся во всех отношениях (кроме распределения памяти вручную конечно) было бы лучше. Вобщем, о проблемах с питоном вообще и джангой в частности можно рассказывать часами.

> В сторону других языков смотреть не хочется, т.к. Perl как язык меня вполне устраивает.

Ну как хочеш, тебе решать. Многие вообще на висуалвасике работают, и ничего. Перла я не знаю, но думаю что он всё-таки получе висуалвасика будет.

Django Python: представления, url, передача аргументов, 404 ошибка

Продолжаем серию статей по Python Django.

Для данной статьи в админке было создано три вопроса и по три ответа просто для наглядности вывода страниц.

В этой статье мы посмотрим на:

1.Представления ( Представление по сути является функцией для обработки запроса, использует шаблон для генерации страницы )

2. Поработаем с url

3. Произведем передачу аргументов странице

4. Выведем 404 ошибку в случаем исключения

Код главного urls: C:\django_code\prog\prog\urls.py

Код urls приложения: C:\django_code\prog\firstapp\urls.py

Код представления приложения: C:\django_code\prog\firstapp\views.py

Коды шаблонов вывода на экран страниц:

C:\django_code\prog\firstapp\templates\firstapp\index.html

C:\django_code\prog\firstapp\templates\firstapp\detail.html

Проверяем:

На этом все, видео выложу на моем канале YouTube !

Вопрос Django

У меня нет примера, потому что я сейчас не работаю над чем-то значимым, но мне все же интересно, прочитав документы о наборах форм:

Какова наилучшая практика для одного представления с несколькими различными формами моделей, которые публикуются в одно и то же время (скорее, одна комбинированная форма, поскольку вы не можете отправлять несколько форм одновременно, но из-за отсутствия лучшего объяснения. ), некоторые из которых являются одномодельными, а другие — 1 или более форм (например, Person , его 1 Address и его 1 или более Pet объектов), как Django делает с TabularInline . Inlines были в Django несколько раз, поэтому я подозреваю, что есть более эффективные методы, чем то, что я могу найти, просто скопировав/вставив в admin/options.py , нет?

Убедитесь, что вы используете транзакции (поэтому убедитесь, что они включены, и что вы используете что-то другое, кроме MySQL с таблицами MyISAM). Это правда все время, действительно, но это даже сейчас более верно. :)

Используйте несколько forms.Form / forms.ModelForm , которые сгруппированы в один элемент HTML

Затем, когда вы обрабатываете свои формы, просто обработайте их оба и убедитесь, что вы требуете, чтобы оба были действительными, чтобы фактически завершить представление в случае успеха.

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

Создание первого приложения на Django, часть 1¶

Давайте учиться на примере.

В этом уроке мы расскажем о создании базового приложения для голосования.

Он будет состоять из двух частей:

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

Мы предполагаем, что вы уже установили Django . Вы можете узнать, установлена ли Django и какая версия, выполнив в командной строке следующую команду (указывается префиксом $):

Если фреймворк Django установлен, вы увидите номер версии. Если нет, вы получите сообщение об ошибке «Нет модуля с именем django».

Это руководство написано для Django | version | и требует как минимум версию Python 3.5. Если версия Django не совпадает, вы можете обратиться к учебнику для вашей версии Django или обновить Django до последней версии. Если вы используете более старую версию Python, прочитайте Какие версии Python можно использовать с Django? , чтобы найти совместимую версию Django.

Смотрите Как установить Django , чтобы узнать как удалить старые версии Django и установить последнюю версию.

Где получить помощь:

Если у вас возникли трудности с этим руководством, можно написать сообщение в django-users или зайти в чат #django on irc.freenode.net, где другие пользователи Django могут вам помочь.


Создание проекта¶

Если вы раньше Django не использовали, то необходимо позаботиться о начальной настройке. А именно, необходимо автоматически сгенерировать определенный код, который устанавливает Django project — набор настроек для конкретного экземпляра Django, включающий в себя конфигурацию базы данных, специфичные для Django опции специфичные настройки для приложения.

Выполните в терминале в командной строке cd : смену каталога на тот, в котором вы хотите хранить код проекта, затем запустите следующую команду:

Это создаст каталог mysite в текущем каталоге. Если этого не произошло, то смотрите Problems running django-admin .

Не рекомендуется в качестве названия проекта названия встроенных компонентов Python или Django. Это значит, что следует избегать использования таких имен, как django (будет конфликт с самим фреймворком) или test (будет конфликтовать со стандартным пакетом Python).

Где этот код должен находится?

Если бэкграунд написан на простом старом PHP (без использования современных фреймворков), вы, вероятно, привыкли размещать код в корневом каталоге веб-сервера (например, /var/www ). С Джанго так лучше не делать. Не стоит помещать какой-либо Python код в корневой каталог веб-сервера, потому что существует риск, что он может стать доступным для просмотра. Это не очень хорошо для безопасности сервера.

Размещайте свой код в каком-либо каталоге вне корневого каталога сервера, например /home/mycode .

Давайте посмотрим на результат выполнения команды startproject :

Разберем, для чего нужны эти файлы и каталоги:

  • Внешний каталог mysite/ — просто контейнер вашего проекта. Это имя ничего не значит для Django, поэтому его переименовать как угодно.
  • manage.py : утилита, позволяющая взаимодействовать с проектом различными способами. Вы можете прочитать все подробности о manage.py в django-admin and manage.py .
  • Внутренний каталог mysite/ это Python модуль вашего проекта. Его название вы будете использовать для импорта чего-либо из этого модуля (например, mysite.urls ).
  • mysite/__init__.py : пустой файл, который сообщает Python, что этот каталог должен рассматриваться как пакет Python’а. Если вы новичок в Python, прочитайте больше о пакетах в официальной документации Python.
  • mysite/settings.py : Конфигурация и настройки проекта Django. В Django settings рассказано все о том, как работают настройки.
  • mysite/urls.py : указание URL проекта на Django, можно сказать, что это «оглавление» вашего проекта. Прочитайте больше информации о URL в URL dispatcher .
  • mysite/wsgi.py : Точка входа для WSGI совместимых веб-серверов для работы с проектом. Смотрите How to deploy with WSGI для уточнения деталей работы.

Сервер разработки¶

Давайте проверим, работает ли ваш проект Django. Перейдите во внешний каталог mysite , если вы этого еще не сделали, и выполните следующие команды:

Создаём сайт на Django, используя хорошие практики. Часть 1: создаём django-проект

Я начинаю серию статей, посвященных разработке сайтов на Django. Информация для этих статей получена из собственного опыта (полтора года коммерческой разработки на Django, несколько мелких фриланс-проектов, часть проекта pythonworld.ru написана на Django).

Django — веб-фреймворк для создания сайтов, написанный на языке Python. Язык и является одним из основных его преимуществ, так как обеспечивает быстрое написание кода. Также Django имеет «батарейки в комплекте», что означает, что для многих распространённых задач уже есть написанная библиотека. На текущий момент Django считается основным фреймворком Python для разработки веб-сайтов и веб-сервисов.

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

У сайта fl.ru есть RSS-ленты (с точки зрения программиста, это XML-файлы, в которых содержится информация о новых проектах). Поскольку это достаточно удобный формат для машинной обработки, данные будем брать оттуда (впоследствие мы подключим и другие источники данных).

Здесь и далее я буду предполагать, что у вас установлено:

  • Linux-based система (Ubuntu 19.10 — прекрасный выбор),
  • Python 3.7 (на ubuntu 19.10 стоит изначально, на более ранние версии необходимо ставить отдельно,
  • PostgreSQL 11.

Ставим зависимости (PostgreSQL), и создаём директорию для проекта:

Создаём и активируем виртуальное окружение (изолированное окружение среды Python, которое позволяет нам использовать определенные, не зависящие от системы, версии приложений):

Далее предполагается, что все команды выполняются в активированном на предыдущем шаге виртуальном окружении.

Создаём проект. Поскольку мы хотим придерживаться хороших практик, будем пользоваться не стандартной django-admin startproject, а создадим проект с помощью шаблона cookiecutter, в котором уже настроены наиболее часто используемые фишки.

При создании проекта необходимо ответить на несколько вопросов

Хорошей практикой является использование системы контроля версий. Такая система позволяет работать над проектом нескольким людям; автоматически делает копии всех предыдущих версий кода, и вы всегда можете к ним вернуться, если что-то пошло не так.

Теперь копия нашего кода доступна на странице нашего github-репозитория.

Установим локальные зависимости

Создаём базу данных в PostgreSQL

Теперь применим миграции

Дело в том, что все настройки, связанные с безопасностью, при создании проекта через cookiecutter хранятся не в файлах с исходным кодом, а в переменных окружения. Это более безопасно, но менее удобно. Каждый раз при перезапуске компьютера необходимо будет экспортировать все переменные окружения.

Есть способ хранения всех относящихся к проекту переменных окружения в специальном .env файле. Создадим в корне проекта файл под названием .env и содержимым

Теперь достаточно сделать

Далее я предполагаю, что каждый раз после активации виртуального окружения вы делаете export DJANGO_READ_DOT_ENV_FILE=true .

Заходим на 127.0.0.1:8000

Как видим, вместо стандартной django-страницы «It works!» cookiecutter предлагает страницу со ссылками на страницы авторизации и регистрации через django-allauth, а также автоматически подключен django-debug-toolbar, показывающий, сколько происходит запросов к различным компонентам и сколько времени они занимают.

Вопрос по django, python, python-social-auth &#8211 Джанго. Python социальная авторизация. создавать профили в конце конвейера

Я хочу добавить функцию в конце конвейера авторизации, она предназначена для проверки, существует ли таблица «Профили» для этого пользователя, если она не будет создана, создаст таблицу. Модель Profiles — это таблица, где я храню дополнительную информацию о пользователе:

У каждого пользователя должна быть таблица профилей. Итак, я добавил функцию в конце конвейера:

Я получаю ошибку:

Я новичок в социальной аутентификации Python, и, похоже, мне не хватает чего-то очевидного. Любая помощь будет оценена.

Итак, я отвечу на свой вопрос на всякий случай, если он пригодится кому-то в будущем. Я не эксперт, но вот оно:

Я следилэтот учебник, и потому что он делает

Я думал, что смогу сделать

Но это не сработало, это дало мой KeyError.

Тогда я попробовал:

И это сработало. Но у меня возникла новая проблема: имя пользователя из деталей dict было чем-то вроде u’Firstname Lastname ‘, и когда я попытался получить объект User

Он не был найден, потому что имя пользователя в модели User было u’FirstnameLastname ‘(без пробела).

Наконец, я снова прочитал документы и обнаружил, что могу просто использовать пользовательский объект напрямую, он передается функции как «пользователь»:

Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих