Cgi: пишем простой сайт на python. часть 2: обработка форм, cookies

Что другие делают в Python?

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

, к примеру, использовали Python с самого начала, и сегодня он занимает место ведущих гигантов среди языков, ориентированных на серверную сторону. Гвидо ван Россум, добрый пожизненный диктатор Python (уже нет) даже работал нам на протяжении нескольких лет, наблюдая за тем, как развивается язык.

В Instagram любят Python за его простоту. Сервис известен «самым большим развертыванием веб-фреймворка Django, который полностью написан на Python».

Spotify использует язык из-за его сервисов анализа данных и бэкенда. Согласно команде разработчиков, простота использования Python позволяет достичь молниеносной скорости разработки. Spotify выполняет тонны анализов, чтобы собирать рекомендации своим пользователям, так что им нужно что-нибудь, что может выполнять такую работу быстро. Python – это решение!

Cookies

Cookies (печеньки) — небольшой фрагмент данных, отправленный веб-сервером и сохраняемый на компьютере пользователя. Браузер всякий раз при попытке открыть страницу соответствующего сайта пересылает этот фрагмент данных веб-серверу в составе HTTP-запроса.

Собственно, cookies — хороший способ сохранить некоторые данные о пользователях.

Отправка печенек осуществляется заголовком Set-cookie:

#!/usr/bin/env python3
print("Set-cookie: name=value; expires=Wed May 18 03:33:20 2033; path=/cgi-bin/; httponly")

print("Content-type: text/html\n")
print("Cookies!!!")

Например, если сохранить этот скрипт в /cgi-bin/cookie.py и зайти на localhost:8000/cgi-bin/cookie.py, то вам поставится печенька с именем name и значением value. Срок её хранения до мая 2033 года, отправляется повторно на сервер только к скриптам, которые расположены в /cgi-bin/, и передается только http-запросами (её нельзя получить из браузера пользователя с помощью javascript).

Все эти параметры не являются обязательными. Можно написать так:

#!/usr/bin/env python3
print("Set-cookie: name=value")

print("Content-type: text/html\n")
print("Cookies!!!")

Ресурсы для младших школьников

  • Build a «Pypet». Изучите основы программирования на Python, создавая тамагочи в стиле «Pypet» от Татьяны Тилоски.
  • Guido van Robot  Учебный инструмент, в котором учащиеся пишут простые программы с использованием языка, похожего на Python, для управления моделируемым роботом. Проект включает план обучения, так как прошел испытания в средней школе Йорктауна.
  • Python for Kids от Джейсона Р. Бриггса. Книга с примерами кода и головоломками.
  • PythonTurtle обучающая среда на Python, подходящая для начинающих и детей. Ресурс ориентирован в преимущественно на детей, но, как известно, успешно используется взрослыми.
  • Young Coders tutorial Это полный текст учебника, который ежегодно преподается в PyCon (Северная Америка), с примерами и упражнениями. Это учебное пособие дает базовые навыки и выстраивает работу со сложной логикой и играми. Подходит детям от 10 лет и начинающим взрослым.
  •  свободно могут использовать для домашнего обучения школьники и студенты старше 13 лет. Исходя из нашего опыта, обучающиеся этого возраста усваивают материал так же быстро, как и взрослые новички в программировании.

Шаг 4 — Настройка виртуальной среды

Вы, должно быть думаете, что это за виртуальная среда такая, да? Я тоже так думал. Но не переживайте, я всё объясню. Виртуальная среда поможет нам отделить нашу среду разработки и установки пакетов от остальной системы. То есть, всё, что мы установим в виртуальной среде, не повлияет на реальную систему. Очень удобно, ага. Давайте же настроим её.

  1. Установим , прописав в терминале .

2. Перейдите на тот же уровень, где находится ваша корневая папка и напишите , чтобы создать виртуальную среду (посмотрите на иерархию ниже, если вы ещё не разобрались, в моем случае корневая папка — ).

3. Для активации виртуальной среды, выполните , а для деактивации просто напишите .

Виртуальная среда создана

Когда мы войдем в виртуальную среду, увидим что-то подобное

Почему выбрать Django?

Хорошая документация — документация данного фреймворка выполнена на высшем уровне. Все статьи написаны понятным языком и снабжены примерами и объяснениями которые не освятят ни единого вопроса. Есть даже книги на русском языке по данному фреймворку которые занимают лидирующие места продаж в своем разделе.

Самостоятельная генерация админ панели — Это пожалуй самая уникальная сторона Django по сравнению с другими фреймворками а том же PHP. Данная возможность поможет вам выиграть во времени написания сайта т.к. создание админ интерфейса сводится наброску нужных моделей и можно уже начать работать с сайтом.

Поддержка паттерна MTV (Model-Template-View) — он напоминает классический MVC. MTV разделяет бизнес логику от дизайна, что очень хорошо сказывается на будущее огромного проекта которого будет поддерживать несколько людей. Пока дизайнер будет разбираться каким цветом и шрифтом он выведет мета теги, меню сайта и текст то программист независимо от дизайнера, будет писать для сайта функционал. Это позволит увеличить КПД в работе сайта.

Да и работать в кругах программистов авторитетнее на Python, C#, Java. PHP хороший язык программирования он будет жить и занимать лидирующее место инструмента создании сайтов еще много лет, но вы же не хотите ограничивать свои возможности только на создании сайтов?

Чего (скорее всего) не стоит делать в Python?

Очевидно, что Python – чрезвычайно универсальный язык, с которым вы можете делать массу вещей. Но вы не можете делать буквально всё. Фактически, есть определенные сферы, на которые Python не рассчитан.

С точки зрения интерпретируемого языка, у Python есть проблемы со взаимодействия с низкоуровневыми устройствами, такими как драйверами устройств. Например, у вас будут проблемы, если вы захотите написать операционную систему только на Python. Вам лучше связать его с С или С++ для низкоуровневых приложений.

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

Онлайн-курсы с наставником

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

Прикладной онлайн-курс Аналитик данных на Python от skillbox:

  • 16 недель обучения на основе реальных кейсов
  • Освоение популярных инструментов анализа данных: numpy, pandas, matplotlib, seaborn
  • Возможность стажировки в топовых компаниях

Цена 40000₽

Образовательный онлайн-курс Python-разработчик от skillbox:

  • Практический 4-х месячный курс
  • Быстрый старт и практика кодинга под присмотром опытного наставника
  • Пожизненный доступ к обучающим модулям
  • Создание своего первого проекта: «Реализация искусственного интеллекта для оптимального сбора ресурсов»

Цена 48000₽

Алгоритмы и структуры данных на Python. Базовый курс от geekbrains. Во время занятий (продолжительностью 1 месяц) вы сможете:

  • Излагать идеи в виде блок-схем, читать готовые схемы и реализовывать программы на их основе
  • Закрепить навыки реализации простейших алгоритмов с ветвлениями, циклами, а также рекурсивных алгоритмов
  • Познакомиться с классическими структурами данных
  • Освоить классические алгоритмы, которые лежат в основе современных проектов
  • Узнать об алгоритмической сложности и научиться её оценивать
  • Познакомиться с внутренним устройством интерпретатора Python

Цена 16500₽

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

А для тех же, кто не может позволить себе обучение на платных курсах с наставником, я ранее выкладывал список бесплатных курсов Python.

Пишем тесты для Django приложений

Наконец-то мы добрались до тестов

Хотя в приложениях это является базовым концептом, очень важно, чтобы добавление тестов в Django вошло у вас в привычку. Цитируя Джейкоба Каплан-Мосса, одного из создателей Django: «Непротестированный код можно считать сломанным«

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

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

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

Python

# pages/tests.py
from django.test import SimpleTestCase

class SimpleTests(SimpleTestCase):
def test_home_page_status_code(self):
response = self.client.get(‘/’)
self.assertEqual(response.status_code, 200)

def test_about_page_status_code(self):
response = self.client.get(‘/about/’)
self.assertEqual(response.status_code, 200)

1
2
3
4
5
6
7
8
9
10
11
12

# pages/tests.py

fromdjango.testimportSimpleTestCase

classSimpleTests(SimpleTestCase)

deftest_home_page_status_code(self)

response=self.client.get(‘/’)

self.assertEqual(response.status_code,200)

deftest_about_page_status_code(self)

response=self.client.get(‘/about/’)

self.assertEqual(response.status_code,200)

База данных нам пока не нужна, поэтому сейчас можно использовать простой . При наличии базы данных нужно обратиться к . Затем проводится проверка, в результате которой у каждой страницы должен быть код состояния 200 — это успешный ответ на стандартный HTTP запрос. Таким образом, становится понятно, что запрашиваемая страница действительно существует, но при этом не раскрывается ее содержимое.

Для запуска теста остановите веб-сервер, использовав комбинацию , а затем наберите в командной строке :

Shell

(pages) $ python manage.py test
Creating test database for alias ‘default’…
System check identified no issues (0 silenced).
..
———————————————————————-
Ran 2 tests in 0.014s

OK
Destroying test database for alias ‘default’…

1
2
3
4
5
6
7
8
9

(pages)$python manage.pytest

Creating testdatabase foralias’default’…

System check identified no issues(silenced).

..

———————————————————————-

Ran2tests in0.014s

 
OK

Destroying testdatabase foralias’default’…

Все успешно! В будущем мы будем использовать более сложные тесты, особенно это важно при работе с базами данных

Пишем программу 3D-моделирования в 500 строках кода

Перевод

Введение

Люди от природы креативны. Мы постоянно проектируем и создаём новые, полезные и интересные вещи. Сегодня мы пишем ПО, помогающее процессу проектирования и творчества. Программы САПР (Computer-aided design, CAD) позволяют творцам проектировать здания, мосты, графику видеоигр, чудовищ для фильмов, объектов для 3D-печати и множество других вещей перед созданием физической версии проекта.
По своей сути, инструменты CAD являются способом абстрагирования трёхмерного проекта в нечто, что можно просматривать и редактировать на двухмерном экране. Чтобы справляться со своей задачей, инструменты CAD должны обеспечивать три основных элемента функциональности. Во-первых, они должны иметь структуру данных, описывающую проектируемый объект: это то, как компьютер понимает создаваемый пользователем трёхмерный мир. Во-вторых, инструмент CAD должен обеспечивать отображение проекта на экране пользователя. Пользователь проектирует физический объект с тремя измерениями, но экран компьютера имеет всего два измерения. Инструмент CAD должен моделировать способ восприятия нами объектов и отрисовывать их на экране так, чтобы пользователь смог понять все три измерения объекта. В-третьих, CAD должен предоставлять возможность взаимодействия с проектируемым объектом. Пользователь должен быть способен дополнять или модифицировать проект, чтобы создать нужный результат. Кроме того, все инструменты должны иметь возможность сохранения и загрузки проектов с диска, чтобы пользователи могли сотрудничать, обмениваться своей работой и сохранять её.

#5: Создание микроблога с помощью Flask

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

Он называется «Мега-руководство Flask», и однозначно соответствует названию. Проработав 23 главы, вы получите глубокое представление о веб-фреймворке Flask. К концу проекта, вы сможете создать полностью работающее веб приложение.
Вам не нужно знать что-либо о Flask, чтобы приступить к делу, так что это идеально для тех, у кого чешутся руки, чтобы приступить к веб разработке.

Дополнительные файлы Django-приложения

Перед размещением кода на Heroku, нам понадобится сделать четыре изменения в нашем проекте Pages:

  • обновить ;
  • создать новый файл ;
  • установить на нашем веб-сервере ;
  • изменить строчку в файле .

Внутри уже существующего файла уточним используемую версию Python — в нашем случае 3.8. Для этого добавим в нижней части файла следующие две строчки.

Pipfile

Python

python_version = «3.8»

1
2

requires

python_version=»3.8″

Далее запускаем для генерации подходящего .

Shell

(pages) $ pipenv lock

1 (pages)$pipenv lock

В действительности, в поисках информации о виртуальном окружении, Heroku заглядывает внутрь нашего Pipfile.lock. По этой причине здесь нам пришлось добавить настройку версии языка программирования.

Затем создаем , который является специфическим файлом конфигурации для Heroku.

Shell

(pages) $ touch Procfile

1 (pages)$touchProcfile

Откройте при помощи текстового редактора и добавьте следующее:

Python

web: gunicorn pages_project.wsgi —log-file —

1 webgunicorn pages_project.wsgi—log-file-

Это говорит о том, что нам надо использовать Gunicorn, что является сервером, подходящем для продакшена, в то время как собственный сервер Django работает только в локальном окружении. Устанавливаем gunicorn при помощи Pipenv.

Shell

(pages) $ pipenv install gunicorn==19.9.0

1 (pages)$pipenv install gunicorn==19.9.0

Конфигурация для веб-сервера находится в файле wsgi.py, который Django автоматически создает для каждого нового проекта. Он находится в основной папке нашего проекта. Поскольку наш проект называется , сам файл находится в .

Последний шаг — небольшое изменение в файле . Прокрутите вниз до части и добавьте . Результат должен получиться следующим:

Python

# pages_project/settings.py
ALLOWED_HOSTS =

1
2

# pages_project/settings.py

ALLOWED_HOSTS=’*’

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

Для проверки изменений мы выполним команду , добавляем новые файлы и затем коммитим их:

Shell

(pages) $ git status
(pages) $ git add -A
(pages) $ git commit -m «New updates for Heroku deployment»

1
2
3

(pages)$git status

(pages)$git add-A

(pages)$git commit-m»New updates for Heroku deployment»

Теперь мы можем разместить код на GitHub, создав онлайн копию наших изменений в коде.

Shell

(pages) $ git push -u origin master

1 (pages)$git push-uorigin master

Обработка Cookies

Теперь научимся получать cookies. Они передаются на сервер и доступны в переменной os.environ (словарь, cookies хранятся по ключу HTTP_COOKIE). Они передаются в виде пар ключ=значение, что не очень удобно при обработке. Для упрощения работы можно использовать модуль http.cookies.

Напишем простой скрипт (/cgi-bin/cookie.py), проверяющий, установлена ли кука, и если нет, устанавливает:

#!/usr/bin/env python3
import os
import http.cookies

cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE"))
name = cookie.get("name")
if name is None
    print("Set-cookie: name=value")
    print("Content-type: text/html\n")
    print("Cookies!!!")
else
    print("Content-type: text/html\n")
    print("Cookies:")
    print(name.value)

Так страница выглядит после первого запроса:

И после обновления страницы:

Не следует хранить в cookies важные данные, и не полагайтесь на выставленный вами срок хранения. Cookies можно удалить или изменить вручную в браузере.

#4: Майнинг данных Twitter

Благодаря интернету, и (все чаще и чаще) интернету вещей (IoT) – у нас есть доступ к огромному количеству данных, о которых не могли мечтать всего десять лет назад. Аналитика – это огромная часть любой сферы, которая связана с данными. О чем люди разговаривают? Какие шаблоны видны в их поведении?

Твиттер – отличное место, чтобы получить ответы на эти вопросы. Если вам интересен анализ данных, тогда майнинг данных в Twitter – отличный способ попробовать свои навыки в Python, чтобы ответить на вопросы об окружающем мире.

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

Вы увидите, как использовать Tweepy для фильтрации твитов, которые вы хотите вытягивать, TextBlob для подсчета настроения этих твитов, Elasticsearch для анализа содержимого этих твитов и Kibana для показа результатов. По окончанию данного руководства, вы уже будете готовы к тому, чтобы заняться другими проектами, которые используют Python для обработки текстов и распознавания речи.

Other Useful Items

  • Looking for 3rd party Python modules? The
    Package Index has many of them.
  • You can view the standard documentation
    online, or you can download it
    in HTML, PostScript, PDF and other formats. See the main
    Documentation page.
  • Information on tools for unpacking archive files
    provided on python.org is available.
  • Tip: even if you download a ready-made binary for your
    platform, it makes sense to also download the source.
    This lets you browse the standard library (the subdirectory Lib)
    and the standard collections of demos (Demo) and tools
    (Tools) that come with it. There’s a lot you can learn from the
    source!
  • There is also a collection of Emacs packages
    that the Emacsing Pythoneer might find useful. This includes major
    modes for editing Python, C, C++, Java, etc., Python debugger
    interfaces and more. Most packages are compatible with Emacs and
    XEmacs.

Потенциал Python в крупных проектах

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

Да, этот язык можно использовать во всех крупных проектах, как инструмент для создания прототипов, но как насчет применения в финальной версии?

Если не рассматривать машинное обучение, и брать программы, которым жизненно важна скорость выполнения, то вряд ли для Python найдется место. Однако часто практикуется гибрид разных языков, например, Python и C++. Такой подход позволяет достичь и высокой скорости разработки и высокой скорости выполнения программы. На Python пишется большая часть кода, а на C++ лишь те участки, которые сильно влияют на скорость выполнения (например, функция по обработке и передаче большого количества данных в единицу времени).

Начальная настройка приложения в Django

Начальная настройка приложения Django включает следующие этапы:

  • создание директории для кода;
  • установка Django в новом ;
  • создание нового проекта в Django;
  • создание нового приложения ;
  • обновление файла .

Будучи в командной строке, убедитесь, что вы сейчас не находитесь в действующем виртуальном окружении. Если перед знаком доллара () есть текст в скобках, значит, окружение активно. Выполните команду и деактивируйте его.

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

В заново открытой командной строке наберите следующее:

Shell

$ cd ~/Desktop
$ mkdir pages && cd pages
$ pipenv install django==3.0.*
$ pipenv shell
(pages) $ django-admin startproject pages_project .
(pages) $ python manage.py startapp pages

1
2
3
4
5
6

$cd~Desktop

$mkdirpages&&cdpages

$pipenv install django==3.0.*

$pipenv shell

(pages)$django-admin startproject pages_project.

(pages)$python manage.pystartapp pages

Откройте в вашем текстовом редакторе файл . В самом низу списка проектов добавьте приложение :

Python

# pages_project/settings.py
INSTALLED_APPS =

1
2
3
4
5
6
7
8
9
10

# pages_project/settings.py

INSTALLED_APPS=

‘django.contrib.admin’,

‘django.contrib.auth’,

‘django.contrib.contenttypes’,

‘django.contrib.sessions’,

‘django.contrib.messages’,

‘django.contrib.staticfiles’,

‘pages.apps.PagesConfig’,# новое

Запускаем локальный сервер при помощи команды :

Shell

(pages) $ python manage.py runserver

1 (pages)$python manage.pyrunserver

Затем переходим на .

Приветственная страница Django 

Как пользоваться ADB run

Шаблоны в Django

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

Вспомним, что в предыдущей уроке на сайте «Hello, World» фраза была вписана сразу в код файла как строка игнорируя какие либо HTML шаблоны. Технически это работает, но масштабируется не очень хорошо. Предпочтительнее будет связать представление (View) с шаблоном (Template), таким образом отделяя информацию из каждого.

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

Для начала нужно определить, где поместить шаблоны внутри структуры проекта Django. Есть два варианта. По умолчанию загрузчик шаблонов Django осмотрит каждое приложение, выискивая связанные шаблоны. Тем не менее, структура остается несколько запутанной: каждое приложение нуждается в новой директории , другой директории с таким же названием, как и у приложения, а также в файле шаблона.

Следовательно, рассматривая приложение , Django будет ожидать следующую структуру:

Shell

└── pages
├── templates
├── pages
├── home.html

1
2
3
4

└──pages

├──templates

├──pages

├──home.html

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

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

Первым делом покинем запущенный веб-сервер, применив комбинацию . Затем создадим директорию под названием и файл HTML под названием .

Shell

(pages) $ mkdir templates
(pages) $ touch templates/home.html

1
2

(pages)$mkdirtemplates

(pages)$touchtemplateshome.html

После этого нам нужно обновить файл и указать Django место новой директории . Это изменение находятся в одну строчку в настройках под .

Python

# pages_project/settings.py
TEMPLATES = , # new

},
]

1
2
3
4
5
6
7
8

# pages_project/settings.py

TEMPLATES=

{

‘DIRS’os.path.join(BASE_DIR,’templates’),# new

},

Затем для файла добавляем обычный H1 заголовок.

Python

<!— templates/home.html —>
<h1>Homepage</h1>

1
2

<!—templateshome.html—>

<h1>Homepage<h1>

Вот и все, шаблон готов! Следующим шагом будет конфигурация нашего URL и файлов представления (views.py).

#8: Играйте в PyGames

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

Библиотека Pygame заметно упрощает разработку собственных игр. Он включает в себя практически все необходимое, чтобы вы могли приступить к разработке игр.

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

Вам доступны десятки игр, которые вы можете создать при помощи библиотеки. Что-бы вы не хотели придумать, чувствуйте себя комфортно и делитесь своими работами в сообществе Pygame!

Шаг 3 — HTML и CSS

Созданный нами сайт выглядит не очень красиво. Что нужно использовать, чтобы улучшить его? Конечно же, HTML и CSS. Они лучше всего подходят для этой задачи. Если вы разбираетесь в веб-разработке, вы можете создать новый файл .html с нуля. Но если вы не умеете это делать, в Интернете существует немало платформ для этого. Найдите наиболее подходящую для вас.

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

#Import dependenciesfrom flask import Flask, render_template#Create instance of Flask Appapp = Flask(__name__)#Define Route and Contant of that page@app.route("/")def home():    return render_template("home.html")#Define 2nd Route and Content@app.route("/blog")def about():    return render_template("blog.html")#Running and Controlling the scriptif (__name__ =="__main__"):    app.run(debug=True)

Для HTML — все файлы .html, которые вы вызываете, должны содержаться в папке под названием в вашей рабочей папке.

Для CSS — вам нужно создать папку и добавить в нее папку , а уже потом добавить в неё ваши файлы .css.

Делать сайты на Python перспективнее?

Да. PHP ограничен одними сайтами и развивается в сторону веб (для чего он и был создан). Python в свою очередь, развивается в разные стороны, это даст вам шанс в будущем сменить свою работу и начать делать, например, программы вместо сайтов не меняя язык программирования. Вам не придется изучать опять новый язык программирования чтобы сменить род деятельности т.е. перескочить с сайтостроения на написание приложении для android, apple, symbian и т.д.

Еще один плюс в сторону Python в том, что он строго типизирован как и Java. Этот язык обучит вас хорошим манерам программиста и не даст волю творить хаос в коде. Но, не будем все обобщать, творить бессмыслицу можно и на Python и делать шедевры на том же PHP. Python научит разделать код на логические блоки чтобы понимать где зона выполнения цикла, где заканчивается один IF и начинается другой и т.д. На PHP тоже можно структурировать код на логические блоки, но там это не обязательно, следовательно новичок может написать код в одну строку и ему ничего не будет, в момент когда Python новичок получит ошибку и начнет править код.

Программы обучения профессии «Python-разработчик»

Полноценное обучение с нуля до уровня junior-программиста. На многих программах обучения имеется вступительное тестирование на умение пользоваться ПК.

Программа Разработчик Python от otus:

  • Если вы писали личные проекты на Python, но нет опыта промышленной разработки
  • Дадутся объяснения следующих вопросов:
    • Как писать простой и идиоматичный код, за который не будет мучительно стыдно?
    • Как тестировать и поддерживать код на Python?
    • Как написать приложение, которое не умрёт под нагрузкой?

После прохождения курса у вас останется:

  • 1 мини веб-проект
  • богатый список литературы для ознакомления и углубления знаний программистов
  • код и материалы занятий, соединенные вместе в виде jupyter-ноутбуков
  • видеозаписи всех вебинаров занятий
  • проектная работа на интересную вам тему

Цена 56000₽ для новых клиентов otus (скидка 4000₽ в течение 7 дней после регистрации).

Программа Профессия Python-разработчик от skillbox:

  • Научитесь с нуля программировать на Python
  • Изучите основы вёрстки сайтов и web-приложений
  • Освойте популярный фреймворк Django
  • Изучите асинхронное программирование для написания высокопроизводительных приложений
  • Реальный опыт разработки — Реализация искусственного интеллекта роботов для оптимального сбора ресурсов — Вёрстка landing page

Цена 93600₽

Программа Факультет Python-разработки от GeekUniversity:

  • Проектно-ориентированное обучение
  • Совместная разработка
  • Год опыта Python-разработки
  • Множество необходимых для работы навыков
    • Умение создавать клиент-серверные приложения для Desktop
    • Навыки прототипирования мобильных приложений
    • Навыки верстки сайтов на HTML, CSS, Bootstrap
    • Навыки frontend-разработки на Javascript и JQuery
    • Умение создавать сайты на Django Framework
    • Знание алгоритмов и структур данных
    • Умение работать в команде, знание методологий разработки: Agile, Scrum
    • Умение работать с GIT
    • Навыки успешного прохождения собеседований и общения с заказчиками
    • Навыки проектирования архитектуры, использования шаблонов проектирования
    • Умение писать «чистый» код
  • Имеются бесплатные подготовительные курсы для тех, кто не сможет пройти тестирование на знания базовых понятий программирования

Установка и настройка среды разработки Python/Django

На этом этапе мы видим перед собой приветственное окно приложения с предложением создать новый проект, открыть существующий или же импортировать из системы контроля версий. Нас же пока интересует первый пункт – Create New Project. Нажимаем его и переходим в созданию нового проекта.

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

Вторая строчка Interpreter отвечает за выбор установленного в системе интерпретатора языка Python. Их может быть несколько, но пока мы не будем вдаваться в нюансы. Сразу отмечу, что для каждого проекта лучше создавать отдельную виртуальную среду (VirtualEnv), которая будет содержать установленные модули, необходимые для конкретного проекта и их настройки и версии не будут влиять на другие проекты. Давайте создадим новую VirtualEnv нажав на шестеренке справа и выбрав пункт Create VirtualEnv.

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

Нажимаем ОК и ждем пока закончится процесс создания виртуальной среды. После нажимаем на кнопку Create внизу справа и запускаем процесс создания проекта.

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

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

Получение данных из форм

Итак, во-первых разберёмся с формами. В модуле CGI есть полезный класс: FieldStorage, который содержит в себе переданную в форме информацию. По сути дела этот класс представляет из себя словарь, обладающий теми же свойствами, что и обычный словарь в python.

У класса FieldStorage есть 2 метода получения значений данных формы:

FieldStorage.getfirst(name, default=None) — всегда возвращает только одно значение, связанное с именем поля формы. Метод возвращает только первое значение в том случае, если нехороший пользователь послал более одного значения

Обратите внимание, что порядок, в котором будут получены значения, могут отличаться от браузера к браузеру. Если нет такого поля формы или значение не существует, то метод возвращает default

FieldStorage.getlist(name) — возвращает список значений, связанных с именем поля формы.

Разберём на примере: создадим в нашей папке файл index.html со следующим содержимым (это будет наша форма, данные из которой мы будем обрабатывать):

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Обработка данных форм</title>
</head>
<body>
    <form action="/cgi-bin/form.py">
        <input type="text" name="TEXT_1">
        <input type="text" name="TEXT_2">
        <input type="submit">
    </form>
</body>
</html>

А в папке cgi-bin/ — файл form.py (обработчик формы)

#!/usr/bin/env python3
import cgi

form = cgi.FieldStorage()
text1 = form.getfirst("TEXT_1", "не задано")
text2 = form.getfirst("TEXT_2", "не задано")

print("Content-type: text/html\n")
print("""<!DOCTYPE HTML>
        <html>
        <head>
            <meta charset="utf-8">
            <title>Обработка данных форм</title>
        </head>
        <body>""")

print("<h1>Обработка данных форм!</h1>")
print("<p>TEXT_1: {}</p>".format(text1))
print("<p>TEXT_2: {}</p>".format(text2))

print("""</body>
        </html>""")

Попробуем это в действии (кто сидит на linux, не забудьте поставить права на выполнение).

Запускаем локальный сервер, и переходим на localhost:8000:

Локальный веб-сервер или Продакшн?

До этого момента, для запуска приложения Pages локально на компьютере мы использовали внутренний веб-сервер Django. Однако локальным адресом нельзя ни с кем поделиться. Для того чтобы запустить сайт в Интернете, сделав его доступным для всех, необходимо разместить код на внешнем сервере. Данный процесс получил английское название продакшн, под которым понимается процесс эксплуатации программы реальными людьми через интернет. Локальные данные доступны только на компьютере разработчика, а продакшн-код находятся на внешнем сервере и становятся доступными для всех.

Существует великое множество серверов. Мы будем использовать Heroku. Для небольших проектов его можно использовать бесплатно, а несложный процесс размещения кода позволил Heroku завоевать большую популярность.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector