@naneri
PHP разработчик.

С чего начать изучение веб разработки на Python, человеку абсолютно не знакомому с backend?

Недавно закончил изучать курс Python на Codecademy. Но в курсе не учит веб разработке.
Сам я изучал HTML, CSS, JS а также Jquery (на том же codecademy) и Bootstrap(на youtube).
Скачал google app engine, но не уверен, что с ним изучение веб разработки пойдёт быстрее.
  • Вопрос задан
  • 47323 просмотра
Решения вопроса 1
@Masterme
Работа с веб отличается от работы с не-веб одной простой вещью:
- сервер (апач, нжинкс и т.п.) получает запрос (а запрос - это строка) от браузера,
- сервер обращается к приложению, передавая ему эту строку как аргумент,
- приложение возвращает результат (тоже строку),
- сервер отдаёт полученную строку в браузер.
Конкретно для питона такое подключение скрипта к веб-серверу решается с помощью WSGI.
Как это сделать. В настройках веб-сервера вы указываете документ_рут вашего приложения и скрипт с колбэком. Конфигурация для апача:
<VirtualHost *:80>
     ServerName mysite
     DocumentRoot /var/sites/mysite/public
     WSGIScriptAlias / /var/sites/mysite/script.wsgi
 </VirtualHost>

Колбэк - это функция в глобальном неймспейсе, называющаяся всегда application. Выглядит она примерно так:

def application(environ, start_response):
    status = '200 OK' 
    output = 'Hello World!'

    response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    return [output]

Когда апач получит запрос - он через wsgi запустит функцию application, а полученный от неё результат выдаст в ответ на запрос.

Это всё, что нужно для понимания, как обрабатывать http-запросы из питона. Всякие джанги работают на этом же механизме.

Теперь неочевидный нюанс. Дело в том, что обычно апач в нормальном состоянии отдаёт статику как статику. А если подключить к нему wsgi - то wsgi начнёт перехватывать и запросы к статике тоже. В джанго такая ситуация решается через жопу (что доказывает, что джангодрочеры - альтернативномыслящие), а именно: предлагается создать поддомен для статики и раздавать её сервером без wsgi, нжиниксом каким-нибудь, либо отдавать статику скриптом. Оба варианта, мягко говоря, спорные. Я считаю намного лучше и гибче третий вариант:
<VirtualHost *:80>
     ServerName mysite
     DocumentRoot /var/sites/mysite/public
     RewriteEngine on
     RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
     RewriteRule (.*) /index.py/$1 [L,QSA,PT]
     WSGIScriptAlias /index.py /var/sites/mysite/script.wsgi
  </VirtualHost>

(Обсуждается здесь.)
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
Heckfi
@Heckfi
попробуйте изучить какой-нибудь питоновский фреймворк(django, flask)
Ответ написан
Комментировать
bizikov
@bizikov
http://bizikov.ru
Лучше начать с Django. На эту тему есть хорошая книга Django. Подробное руководство
Ответ написан
ali_aliev
@ali_aliev
Разработчик на Django/Python, JavaScript
Стоит начать с этой книги http://www.ozon.ru/context/detail/id/5730448/
Далее http://www.ozon.ru/context/detail/id/8382738/ и http://www.ozon.ru/context/detail/id/8382719/
Первый том об основах языка, очень хорошо описаны тонкости питона. В двухтомниках рассказывается о разработке веб приложений, GUI, многопоточность в Python. Дальше просто читайте документацию Django, там можно сказать целая книга и все очень подробно описано. Еще советую почитать вот эту книгу https://django.2scoops.org/
Ответ написан
Комментировать
@maharuga
Комментировать
ArthurG
@ArthurG
Я имею небольшой опыт программирования на питоне под Google App Engine (AE). Просто опишу как я учился.

Сначала я сам долго пытался читать и понимать документацию по AE. Знаний по питону у меня было не достаточно, вернее не было уверенности, что смогу написать. Потом вышли курсы от udacity.

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

Теперь про AE специфичные знания, их можно получить из документации (на англ.) и видео с конференций, их не много и они очень информативные. К примеру, как строить модель данных на datastore.

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

Войдите, чтобы написать ответ

Похожие вопросы