Веб-разработчик, облачные технологии
25,7
рейтинг
25 декабря 2012 в 14:02

Разработка → Создание веб-приложения Django в Visual Studio 2012 и публикация его в облако Windows Azure перевод tutorial

image

Доступные инструменты значительно упрощают разработку приложений для Windows Azure. При изложении материала предполагается, что пользователь не имеет опыта работы с Windows Azure. Выполнение всех шагов данного руководства позволит запустить приложение на основе Django в облаке.

Из этого руководства вы узнаете:

  • Как создать базовое приложение Django.
  • Как запускать и отлаживать приложения Django локально с помощью тестового сервера Django.
  • Как запускать приложения Django локально в эмуляторе среды.
  • Как публиковать и повторно публиковать приложение на платформе Windows Azure.

Следуя приведенным инструкциям, вы создадите простое веб-приложение Hello World. Приложение будет размещено в экземпляре веб-роли, которая размещается в выделенной виртуальной машине на платформе Windows Azure.

Снимок экрана готового приложения приведен ниже:



Примечание. Для выполнения описанных в данном руководстве задач необходима учетная запись Windows Azure. Создать бесплатную пробную учетную запись и активировать функции для предварительного ознакомления можно всего за несколько минут. Для получения дополнительных сведений см. Create a Windows Azure account and enable preview features (Создание учетной записи Windows Azure и включение функций для предварительного ознакомления).

Настройка среды разработки


Прежде чем приступить к разработке приложения Windows Azure, необходимо получить инструменты разработки и настроить среду разработки. Для получения дополнительных сведений о скачивании и установке Windows Azure SDK для Python см. Как установить Python.

Примечание. Для выполнения описанных в данном руководстве задач необходимы Python 2.7 и Django 1.4. Эти версии включены в текущий пакет Windows Azure SDK для Python.

Создание приложения Django


Чтобы создать приложение Django, запустите Visual Studio и создайте проект. Для этого выберите пункт меню File (Файл) -> New Project (Новый проект). Перейдите на вкладку Python, расположенную на верхнем уровне вкладок или в области Other Languages (Другие языки) и выберите шаблон Django Application (Приложение Django):

New Python Project Templates

Нажмите кнопку OK. Ваше первое приложение Django готово.

Visual Studio opened to your first Django project

Перейдем к разработке приложения Django. Щелкните правой кнопкой мыши проект и выберите пункт Add New Django app (Добавить приложение Django), чтобы добавить в проект новое приложение:

Add New App menu item

Теперь можно указать имя приложения:

Add New App name prompt

Введите имя и нажмите кнопку OK. Приложение добавлено в проект:

Solution Explorer with new app added

Зарегистрируйте приложение в settings.py. После этого Django будет автоматически обнаруживать файлы шаблонов, добавленные в каталог Templates (Шаблоны) приложения. Добавьте имя приложения в раздел INSTALLED_APPS:

'DjangoApplication.MyFirstApp',

Add app to settings.py in INSTALLED_APPS

Добавим в файл views.py код, возвращающий простой файл шаблона:

from django.http import HttpResponse
from django.template.loader import render_to_string
def home(request):
    return HttpResponse(render_to_string(
                                        'index.html',
                                        {'content': 'Hello World'}
                                        ))


Add app to settings.py in INSTALLED_APPS

Создадим простой файл шаблона, который будет отображаться приложением при открытии этого окна. Щелкните правой кнопкой мыши каталог Templates и выберите пункт Add new Item (Добавить новый элемент):

Add new item to Templates foder

Выберите пункт Django HTML Template (Шаблон Django HTML) в списке шаблонов и укажите для него имя файла index.html:

Add new item to Templates foder

После этого шаблон будет добавлен в проект и открыт. Вы видите, что началось синтаксическое выделение некоторых тегов шаблона:

Template Added to Solution Explorer

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

Template Intellisense for Django Filters

Капитализация тегов не влияет на результат выполнения этой задачи. Теперь необходимо зарегистрировать URL-шаблоны представления в urls.py. Добавьте в шаблон urlpatterns следующие строки:

url(r'^$', 'DjangoApplication.MyFirstApp.views.home', name='home'),

Register URL

Локальный запуск приложения на тестовом сервере


Вы уже создали свое первое приложение Django. Теперь можно запустить его локально, просто нажав клавишу F5.

Django Hello World in a Browser and the Test Server

Интерпретатор Python запустит файл Django manage.py для тестового сервера. После успешного запуска тестового сервера отображаемый им веб-сайт автоматически откроется в браузере. Запуск при помощи клавиши F5 осуществляется через отладчик. Это позволяет установить точки останова как в коде на Python, так и в файлах шаблонов:

Debugger stopped at a template breakpoint

Теперь можно нажать кнопку Stop (Остановить) и перейти к запуску приложения в эмуляторе среды Windows Azure.

Локальный запуск приложения в эмуляторе


Чтобы запустить приложение в эмуляторе, нужно лишь добавить проект развертывания Windows Azure в решение для проекта Django. Для этого щелкните правой кнопкой мыши узел Django project (Проект Django) в обозревателе решений и выберите пункт Add Windows Azure Cloud Service Project (Добавить проект облачной службы Windows Azure):

Add Deployment Project

После выполнения этой команды проект будет добавлен в обозреватель решений:

After Add Deployment Project

Новый проект будет отмечен как запускаемый проект решения. Перезапустите Visual Studio от имени администратора, чтобы запустить приложение в эмуляторе среды. Теперь для запуска и развертывания приложения в эмуляторе среды достаточно нажать клавишу F5:

After Add Deployment Project

Мы видим ту же веб-страницу, но теперь она имеет другой URL-адрес. Обратите внимание: python.exe на тестовом сервере Django не запущен. Вместо этого мы запустили Django через IIS при помощи шлюза FastCGI, который автоматически устанавливается и настраивается при запуске из Visual Studio.

При работе в эмуляторе среды приложение можно изменять на лету — просто переключитесь в Visual Studio, измените файлы приложения и обновите страницу в браузере. Результаты будут видны сразу же!

Развертывание приложения на платформе Windows Azure


Теперь проект можно развернуть на платформе Windows Azure. Для этого щелкните правой кнопкой мыши Windows Azure deployment project (Развертывание проекта в Windows Azure) в обозревателе решений и выберите пункт Publish (Опубликовать):

Package App Menu

После этого появится приглашение для входа в систему в Windows Azure. Вы можете ввести имеющиеся учетные данные или создать новую учетную запись:

Package Subscription

После ввода учетных данных откроется окно настроек публикации в Windows Azure. Вы можете изменить параметры развертывания или просто нажать кнопку Publish:

Package Settings

Установка и развертывание приложения могут занять некоторое время.

Package Deployment

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

Your Django app in the cloud

Примечание: видеоверсия этого руководства размещена на странице YouTube.
Перевод: Windows Azure Team
Владимир @XaocCPS
карма
776,6
рейтинг 25,7
Веб-разработчик, облачные технологии
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (48)

  • –6
    Как вы смели осквернить django своей «windows azure»? я плачу…
    • +3
      пора открывать для себя новое
      • –8
        это новое уже давно открыто, но как, как черт побери вы посмели??? даже стиль программирования тянут из C# рукалицо…
        • +4
          А что плохого в стиле языка C#? И чем, в данном случае, Azure принципиально отличается от любого другого облака? Искренне надеюсь, что ответом не будет фраза «Он сделан в Microsoft».
          • 0
            Я разве сказал что то плохое про C#?
        • +4
          А где вы увидели тут стиль c#, тут кода то 3 строчки и все они как по мне в питоньем стиле. Типичное hello world на Django.

          Сам сижу на убунте и всё что я тут вижу, хороший редактор, замечательный автокомплит и наверняка дебаг есть.
          Деплой в Windows Azure просто опция, ни кто не запрещает взять и задеплоить ручками куда вам угодно.
      • 0
        правильнее было бы сказать «пора деплоить во что-то новое» :)
      • 0
        кстати — когда Microsoft запилит наконец-то нативный модуль под node.js чтобы его включили в ядро?
        • 0
          Что вы имеете в виду под нативным модулем и для какого ядра? Microsoft поддерживает проект node.js, контрибьютит в него код, проекты node прекрасно работают а azure. Мы даже добавили полноценную поддержку node в WebMatrix.
          • –1
            нативный — это означает в основное дерево node будет включен модуль поддержки Windows Azure — в данный момент это отдельное решение. Также в инсталляторе под Windows модуль Azure НЕ устанавливается по умолчанию если образ запущен в Azure — вопрос такой — почему??? Разве это так сложно?
            Зачем мне сдался WebMatrix если в Visual Studio 2012 его поддержки нету? Или может быть Я неправильно смотрел? А вот поддержка TypeScript мне не нужна — нужен настоящий node.js.
            • 0
              * имелось ввиду поддержка node.js как проекта Visual Studio 2012
            • 0
              Ну WebMatrix предлагает сегодня все, что могла бы предложить студия. И делает это бесплатно. Больше всего мне нравится деплой проекта одной кнопкой и уделенный доступ к файлам. Вам в самом деле стоит его попробовать.
              • 0
                Ну WebMatrix Я пробовал и понял что это такой — обрубок от Visual Studio Express. Давайте не нужно про бесплатность — для разработчика это не критично.
                Если сможете портировать все 25 дополнений из VS которые очень помогают — то Я только за.
                например VS10x Code Map в WebMatrix нет и скорее всего никогда не будет и это только одно дополнение…
                • –1
                  я бы не говорил что это обрубок, это отдельный инструмент со своими плюсами, например генерацией отчетов о структуре сайта, готовыми к развертыванию шаблонами CMS, поддержкой PHP и Node.js…

                  Почему вы не оставляете за собой возможности использовать их вместе — мне не понятно.
                  • –2
                    — Генерация отчетов о структуре сайта — в VS это давно есть, причем много для каких языков
                    — CMS… серьезная фишка ничего не сказать

                    Поскольку Visual Studio всегда была средой типа все-в-одном. Зачем мне использовать 2 инструмента для одной задачи? В VS можно заренее задать в свойства solution порядок запуска — если приложение распределенное — то порядок старта и т.д. в WebMatrix такого нету.
                    И вообще — Вы видно забыли с чего WebMatrix начинал. Это было улучшение Windows Live Writer который по сути были Word для Online блогов. Я не «хомячок» и мне нужен нормальный инструмент.
                    К слову относительно невысокая популярность node.js for Windows ограниченная именно отсутствием поддержки в VS.
                    • +1
                      Генерация отчетов — это инструмент, который обходит все страницы сайта и анализирует их на проблемы. В VS такого инструмента нет.

                      WebMatrix не «начинал как улучшение Windows Live Writer» — это странное заблуждение, не понятно откуда оно у вас. WebMatrix всегда был отдельным уникальным продуктом, я лично знаком с ребятами которые его делают.
                      • –2
                        Опять «маркетинговая лапша» :)
                        Вы молодец неудобные для Вас вопросы игнорируете, и продолжаете рассказывать про WebMatrix — если Я еще раздумывал на тему Azure+node.js+VS — то теперь уже точно решил что это не стоит того, и стоит смотреть только в сторону Joyent.
                        P.S. лучше передайте от меня привет разработчикам VS — дополнения для node.js которого так и не дождался. WebMatrix хорош, но не для серьезных проектов.
        • 0
          и для тех кто не знает — azure-sdk-for-node сейчас полностью написан на javascript — вопрос — зачем?
          учитывая что под Windows вполне можно сделать отдельный билд что повысит быстродействие как минимум.
  • –5
    Когда RoR оскверните? В голове прям так и рисуется картина как сидят маркетологи на пару с разработчиками windows azure и кидают кости, так сегодня это будет ROR, завербуем еще пару адептов на темную сторону силы) Зря я это написать ведь автор топика работает в Microsoft, плакала моя карма)
    • +5
      Не могу понять вашей логики, или вы специально троллите, что наиболее вероятно или же, мягко говоря, сами себе сильно противоречите. Я например вижу это как развитие Django- еще одна дополнительная возможность — разве у вас что то меняется от того что можно использовать Django в Azure? Например синтаксис языка или ваш любимый IDE или еще что нибудь? Каждый день появляется что то новое, каждый день появляются новые потребности и если язык не будет развиваться — то рано или поздно язык умрет. Мне нравится Python и мне нравится Azure и я рад что его можно использовать в Azure.

      В силу работы приходится писать и на JS, C#, Java и C++. Для души пишу иногда на F# и Python. Каждый раз радуюсь что C# «оскверняют» фишками из F#. Я рад что C# «осквернили» проектом mono и теперь часть личных проектов для Android и IPhone пишу на C# и скорее всего на работе выберу моно для следующего боевого проекта — как только обкатаю ньюанасы на личных проектах. Я был бы счастлив если бы C# «осквернили» возможностью использования в Azure Mobile Services, что обещали сделать в будущем ближе к релизу (сейчас только node.js) — все это только на пользу языку (не говоря уже про саму платформу).

      Как еще можно объяснить ваш «праведный гнев» против «святотатства» кроме троллинга или недальновидного фанатизма?
      • –4
        я тоже рад но тут маркетинг и он явно не помогает развитию технологий
  • –5
    :)
    rusdemotivator.ru/uploads/09-26-2012/201209261700287.png (увы img не отображает)
    • –2
      тут скорее буханка-троллейбус.жпг

      Python в windows-стэке работает далеко не так гладко, как в *никсах. Без особой необходимости (простого «вот у меня уже есть сервер с виндой» недостаточно) я бы так делать не стал.
      • 0
        тоже самое могу сказать по поводу node.js — поддерживать который не очень стараются, хотя учитывая минусующих — всем пофиг.
      • –2
        понятное дело что опытный джангист даже пробывать не будет, они делают ставку на новичков, дабы завербовать неокрепшие умы
      • +2
        вы можете развернуть виртуальные машины на любимом дистрибутиве Linux в облаке Windows Azure (в том числе автоматически через шел на своей рабочей машине Linux, Mac или Windows) и поставить любую среду в том числе Python так как вы привыкли

        тут дается простой пример link

        впрочем, я уверен, что Python под Windows работает не хуже чем под Linux
        • 0
          Но автоматический деплой в этом случае работать не будет, верно?

          Голый python — да, работает. А вот с запуском стороннего софта из кода, созданием изолированного окружения, установкой туда модулей и прочими интересными вещами помучаться придется.
          • 0
            в этом фундаментальная разница PaaS-подхода (описан в этой статье) и IaaS-подхода

            Windows Azure поддерживает оба и какой выбрать — дело сугубо ваше

            в случае VM (IaaS) вы настраиваете окружение как хотите и под себя, занимаясь деплоем, настройкой БД и всем остальным, платформа возьмет на себя лишь выделение машин по требованию, замену машин при сбое, балансировку нагрузки между ними и остальные вкусности облака
            • 0
              Спасибо, теперь понятно.
        • 0
          сорри не туда ответил
  • 0
    Я правильно понимаю, что БД в Вашем примере не используется совсем? Если база будет — как деплой делается?
    • 0
      Работа с хранилищами данных осуществляется с помощью Python SDK для Windows Azure, выпущен с открытым кодом, доступен в разделе разработчика Python на официальном сайте

      www.windowsazure.com/en-us/develop/python/

      там же вы можете найти массу статей по использованию Python и Django в разных видах в облаке Windows Azure
      • 0
        Хм, то есть, для данных там свой API? То есть, выкидываем джанговский ORM и админку, как минимум?
        • 0
          Windows Azure как облачная платформа предлагает ряд облачных (бесконечно масштабируемых, отказоустойчивых) сервисов для хранения данных: блобы (файлы), таблицы (петабайтное noSQL key-value хранилище) и очереди (сообщений).

          Кроме того, есть Windows Azure Database — облачная SQL база данных, которая предлагает реляционное хранилище как сервис.Плюс в Windows Azure есть еще набор облачных сервисов, которые упрощают разработку, решают задачи интеграции, мобильной разработки, работы с медиа и т.д.

          Все это как можно понять элементы облачной платформы, которые можно использовать в облачном решении. Для всего этого есть базовый REST API, который вы можете использовать откуда угодно. Но существуют и SDK (обертки над REST) для более удобного использования разработчиками в проектах на базе Java, .NET, PHP, Node.js и Python.

          Если же вы хотите использовать свои собственные настройки виртуальных машин, ОС, БД и так далее — ради бога, разворачивайте машины как вам удобно. Применяйте то, что вам нравится.
          • +1
            Вы говорите, что Вы юзаете Django на Azure. Я просто хочу понять — можно ли Windows Azure Database (или что-то другое, мне в принципе все равно, как оно будет называться) использовать как стандартную базу данных, работающую с Django ORM. Amazon RDS, например, можно — по факту, это развернутый на отдельной виртуалке масштабируемый MySQL.

            Вы же пишете в ответ какой-то маркетинговый булшит, из которого мне, например, все еще непонятно, можно или нет.

            Сила облака — в разделении сервисов и масштабировании, виртуалку я могу и без Azure взять.
            • 0
              нет, так как в Azure нет MySQL из коробки
              да, вы можете развернуть в Azure свой MySQL

              я просто хотел дать описание платформы подробнее. не нравится буду отвечать кратко
          • 0
            только Azure Database — имеет часто просадку в IOPS, дропает часть транзакций при их большом количестве и самое главное плохо вертикально масштабируется (необходимо вручную делать slice по нескольким инстанцам)
      • +1
        дайте рабочий пример популярного ресурса где джанга стоти на виндовс сервере
  • +3
    Извините, но CamelCase в названиях python модулей превращает меня в вомбата
    • –1
      ой, а покажите где именно, вроде бы все *.py написаны нормально :-)
      • 0
        DjangoApplication.MyFirstApp и сравните название до этого в INSTALLED_APPS
        • –1
          а ну так это название папок :-) ну ок
          • 0
            ну грубо говоря, название папки в которой есть __init__.py, является и названием пакета (сорри, назвал его в первый раз модулем, модуль это уже конкретный файл), а пакеты и модули принято называть коротко и строчными буквами.
            • –2
              да что вы распинаетесь там же явно написано MyFirstApp, им бы главное заминусовать не согласных
    • –5
      да вот о чем и речь, видно я не так выразился только и знают минусует армия msовцов
      • +2
        Минусуют вас за другое, поверьте. Как и я. Я сам Django-разработчик под никсами.

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