Python создание сервера без фреймворков
Я только начинаю Python, и мне было интересно, как я буду программировать веб-приложения без необходимости фреймворка. Я разработчик PHP experiance, но у меня есть желание попробовать Python, и мне обычно нравится писать с нуля без ограничения фреймворка.
WSGI - это стандартный Python для интерфейсов веб-сервера. Если вы хотите создать свою собственную структуру или работать без структуры, вы должны изучить это. В частности, я нашел DIY рамки Яна Бика статья полезная.
в стороне, я склонен думать, что рамки полезны и лично используют Django, как и то, как работают пилоны, и использовали бутылки в прошлом для прототипирования-вы можете посмотреть на бутылку, если вы хочешь остаться-из-Ваш-путь microframework.
как есть, mod_wsgi будет обрабатывать только основы разбора запросов и кадрирования результатов.
Как только вы начнете этот путь, вы можете обнаружить, что небольшая поддержка фреймворка проходит долгий путь.
вам нужно будет посмотреть что-то вроде CGI или FastCGI-сервера, который предоставляет API для связи с веб-сервером.
Google App Engine позволяет писать простые приложения, и даже предоставляет локальный веб-сервер, где вы можете попробовать.
вы должны попробовать web.py, он обеспечивает минимальный набор функций, которые не мешают вам.
люди здесь любят рамок. Один из недостатков, который я отметил, заключается в том, что Python не имеет удобного модуля dandy для сессий как встроенной библиотеки, несмотря на то, что он доступен в PHP и как CGI::Session в Perl.
в конечном итоге вы будете делать:
вам придется писать сеансовые материалы самостоятельно.
для программиста PHP, я думаю модулем mod_python это хороший способ, чтобы начать работу без каких-либо рамок. Его можно использовать непосредственно как модуль Apache 2. У вас могут быть теги кода (например, в PHP) и даже условный вывод HTML (HTML внутри оператора if):
ответ "нет". Использование фреймворка делает ваш код более доступным для обслуживания, масштабируемым, читаемым, тестируемым и модульным.
При создании сайтов на Python обязательно использовать фреймворки? Как обойтись чистым Python? Или это обязательный атрибут для сайтостроения?
- Вопрос задан более трёх лет назад
- 9651 просмотр
Да что вы все прицепились к этим фреймворкам? Такое чувтсво, что мода на wordpress прошла, и теперь все, кто раньше клепал говносайты на вп, решили дружно начать радовать мир своими творениями на фреймворках.
Фреймворк - это каркас. Не нужен тебе каркас? Пиши его сам!
Дмитрий Савегин: Если очень хочется - пишите. Фреймворк - набор готовых функций, процедур и многого другого, создан для того, чтобы избавить программиста от рутиной работы.
Дмитрий Савегин: Как - это отдельный разговор. Если не знаешь Как, то может нужно перестать забивать себе голову не нужными вещами, и начать делать хоть что-то?
Дмитрий Савегин: ) Руками) Вам необязательно их использовать. вполне можно написать свои классы и функции и работать с ними. Фреймворки используют когда важна скорость разработки и нет времени писать решения каких-то типовых задач.Мне кажется, Вы,просто,не совсем верно представляете что это такое.
Пишете на python web-сервер с wsgi-интерфейсом. Затем пишете непосредственно web-приложение (с роутингом, шаблонизатором, ORM и прочим по надобности). В процессе узнаете много нового и получаете понимание работы веб-приложений и веб-серверов вообще. До кучи можете еще клиентский интерфейс (фронтэнд) на brython написать.
Не обязательно , но фреймворк позволяет избавиться от рутины и лишнего геммора в виде написания великов и костылей.
"Вам это нужно?" Простой опыт, хотелось бы написать на родном языке, без "примесей", что нужно для этого скачивать?
Закрыт. На этот вопрос невозможно дать объективный ответ. Ответы на него в данный момент не принимаются.
Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы на него можно было дать ответ, основанный на фактах и цитатах.
Закрыт 5 лет назад .
Возник вопрос: как пишутся сайты на Питоне? Прочитал почти половину учебника, использую встроенный интерпретатор на линуксе, но все равно не могу понять, как использовать Питон для создания сайта.
Забыл написать, что хотелось бы обойтись без фреймворков (т.е. написать свой). Никакой информации в инете я не нашел.
Вообще, по-хорошему, это вопрос не для этого сайта. Вопрос крайне расплывчатый. В чем конкретно вы видите проблему?
А какие принципиально новые возможности дает написание сайта на питоне? Хочу изучить, но не знаю принесет ли это какую-то пользу
Рекомендую начать с Django
И как воспользоваться этим кодом? Тоесть меня интересует, как именно осуществляется взаимодействие со скриптом (при создании авторизации, например).
скопировать в файл с расширением .py заменить Hello world! на ваш HTML код выполнить в командной строке $ python you_file.py открыть в браузере 127.0.0.1:8000 Все. Вы наслаждаетесь сайтом на питоне. Чтоб написать полноценное web-приложение вам еще понадобится парсинг GET/POST запросов, куки, сессии итд. Все это уже есть в фреймворках, которые вам тут предлагали.
советую сначала изучить литературу по английскому языку, а потом литературу техническую читать на английском -- на русском не всегда можно найти актуальную информацию в полном объёме
Если очень хочется понять как всё это работает изнутри, советую этот мануал: Python : Веб-разработка без фреймворков
Начните с Django или CherryPie, это достаточно простые для старта фреймворки для создания веб-приложений на питончике, как разберетесь с ними, то уже сами сможете решить, что интереснее, например, торнадо, твистед, гевент етс
Забыл написать, что хотелось бы обойтись без фреймворков (т.е. написать свой). Никакой информации в инете я не нашел.
Добавить в избранное
О бщий интерфейс шлюза или CGI: это набор стандартов, которые определяют обмен информацией между веб-сервером и настраиваемым скриптом. Спецификации CGI в настоящее время поддерживаются NCSA.
Передача информации с использованием метода POST
Ниже приведен такой же скрипт hello_get.py, который обрабатывает GET, а также метод POST.
Возьмем опять тот же пример, что и выше, который передает два значения, используя кнопку HTML FORM и кнопку отправки. Для обработки этого ввода мы используем тот же скрипт CGI hello_get.py.
Первая программа CGI
Вот простая ссылка, которая связана с CGI-скриптом hello.py . Этот файл хранится в каталоге/var/www/cgi-bin и имеет следующий контент. Перед запуском программы CGI убедитесь, что у вас есть режим изменения файла, используя команду chmod 755 hello.py в UNIX, чтобы сделать исполняемый файл.
Если вы нажмете hello.py, то это даст следующий результат:
Поддержка и настройка веб-сервера
Здесь мы предполагаем, что у вас есть веб-сервер и он работает успешно, и вы можете запускать любую другую программу CGI, такую как Perl или Shell, и т. д.
Шаг № 3: Добавление CSS
Теперь я хочу добавить CSS в свой HTML. Для этого создайте папку с именем «static» и создайте файл с именем «main.css». Здесь имя фактического файла CSS может быть любым. Мы решили назвать наш «main.css». Однако имя папки должно быть «static»! Фактически, в «static» папке можно разместить все, что является статическим, например CSS, JavaScript и изображения. Итак, если вы собираетесь размещать изображения, JavaScript и CSS, вы можете создать подпапки.
Сначала напишем нужный CSS (main.css):
Здесь, в index.html, нам нужно написать >”> в заголовке HTML-файла. Здесь filename – это имя файла CSS (у нас main.css). Если, например, «main.css» находится с подпапкой «css», вы должны написать следующее:
После этого вы можете использовать созданный вами CSS. Например, мы создали один под названием «styled» и использовал его в классе h1.
Файл index.html будет следующим:
Главный файл Python – main.py – остается прежним.
Привет, AndreyEx
Передача данных с помощью кнопки радио в программу CGI
Кнопки «Радио» используются, когда требуется выбрать только один параметр.
Вот пример кода HTML для формы с двумя переключателями:
Ниже приведен сценарий radioobutton.py для обработки ввода, заданного веб-браузером для переключателя:
Как это работает?
Ваш сервер отправляет некоторые данные в браузер посетителя в виде файла cookie. Браузер может принять cookie. Если это так, оно хранится как простая текстовая запись на жестком диске посетителя. Теперь, когда посетитель прибывает на другую страницу вашего сайта, cookie доступен для извлечения. После получения ваш сервер знает/запоминает, что было сохранено.
Файлы cookie представляют собой запись текстовых данных из 5 полей переменной длины:
- Expires – дата истечения срока действия файла cookie. Если это пустое, cookie истечет, когда посетитель покинет браузер.
- Domain – доменное имя вашего сайта.
- Path – путь к каталогу или веб-странице, которая устанавливает cookie. Это может быть пустым, если вы хотите получить файл cookie из любого каталога или страницы.
- Secure – если это поле содержит слово «secure», то файл cookie может быть получен только с защищенного сервера. Если это поле пустое, таких ограничений не существует.
- Name=Value – Cookies устанавливаются и извлекаются в виде пар ключей и значений.
Методы GET и POST
Вы должны столкнуться со многими ситуациями, когда вам нужно передать некоторую информацию из своего браузера на веб-сервер и, в конечном счете, в свою программу CGI. Чаще всего браузер использует два метода, которые передают эту информацию на веб-сервер. Этими методами являются метод GET и метод POST.
Простой пример FORM: метод GET
Этот пример передает два значения с помощью кнопки HTML FORM и отправки. Для обработки этого ввода мы используем тот же скрипт CGI hello_get.py.
Пример загрузки файлов
Чтобы загрузить файл, форма HTML должна иметь атрибут enctype, установленный для multipart/form-data. Тег ввода с типом файла создает кнопку «Обзор».
Вышеприведенный пример был заблокирован намеренно для сохранения людей, загружающих файл на наш сервер, но вы можете попробовать код выше с вашим сервером.
Вот сценарий save_file.py для обработки загрузки файлов:
Если вы запустите вышеупомянутый скрипт в Unix/Linux, вам нужно позаботиться о замене разделителя файлов следующим образом, в противном случае на вашей машине windows выше Open() оператор должен работать нормально.
Шаг 4: Добавление изображения
Теперь давайте добавим изображение на созданную HTML-страницу! Для этого мы используем созданную нами папку «static». Внутри папки «static» мы создали другую папку под названием «images». В папке изображений мы поместили изображение. Теперь давайте добавим изображение в HTML-код следующим образом: . В этом случае мы установили высоту изображения 200, но вы можете изменить ее на все, что захотите, и добавить CSS, если хотите.
HTML-код будет выглядеть следующим образом:
В качестве альтернативы можно также использовать следующее:
В этом случае HTML-код будет выглядеть так:
Настройка файлов cookie
Не обязательно устанавливать атрибуты cookie, такие как Expires, Domain и Path. Примечательно, что файлы cookie устанавливаются перед отправкой магической строки «Content-type: text/html\r\n\r\n.
Что такое CGI?
Использование файлов cookie в CGI
Во многих ситуациях использование файлов куки – является наиболее эффективным методом запоминания и отслеживания предпочтений, покупок, комиссий и другой информации, необходимой для лучшего опыта посетителей или статистики сайта.
Как вызвать диалоговое окно «Загрузка файла»?
Например, если вы хотите сделать файл FileName загружаемым из данной ссылки, то его синтаксис выглядит следующим образом:
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Добавить в избранное
F lask – это фреймворк для веб-разработки. В Python есть два модуля, которые можно использовать для веб-разработки: Django и Flask. Однако Flask более легкий и легкий в освоении. В этой статье мы создадим очень простой веб-сайт, используя модуль Python Flask.
Для начала устанавливаем Flask:
Затем в терминале PyCharm введите следующее (где имя моего файла Python – main.py; в вашем случае замените main.py именем вашего файла Python):
Шаг № 5: Добавление JavaScript
Есть два способа добавить JavaScript. В этой первой демонстрации я создам кнопку. Когда кнопка нажата, она активирует функцию myFunction(), которая будет JavaScript (находится в теге ). Для этого настройте кнопку. Затем установите тег скрипта в заголовке HTML-кода и определите в нем функцию. В нашем случае мы определили функцию, которая будет добавлять «все резюме» к элементу p при нажатии кнопки.
Вы можете добавить его в файл index.html следующим образом:
Однако в большинстве случаев файлы JavaScript, как правило, сами по себе являются документами, а не однострочниками. В таких случаях у нас будет файл .js, который нужно связать. В нашем случае мы бы написали: . Итак, как и в случае с файлом изображения, мы связываем файл js следующим образом:
В качестве альтернативы вы также можете использовать это: . Последний сгенерирует этот HTML-код:
Передача данных текстовой области в программу CGI
Элемент TEXTAREA используется, когда многострочный текст должен быть передан в программу CGI.
Вот пример кода HTML для формы с полем TEXTAREA:
Ниже приведен скрипт textarea.cgi для обработки ввода, заданного веб-браузером:
Пример простого URL: метод Get
Вот простой URL-адрес, который передает два значения программе hello_get.py с использованием метода GET.
Ниже приведен скрипт hello_get.py для обработки ввода, заданного веб-браузером. Мы будем использовать cgi- модуль, который очень упрощает доступ к переданной информации:
Это приведет к следующему результату:
Заключение
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Передача информации с использованием метода GET
Метод GET является методом по умолчанию для передачи информации от браузера к веб-серверу и создает длинную строку, которая отображается в поле «Location» вашего браузера. Никогда не используйте метод GET, если у вас есть пароль или другая конфиденциальная информация для передачи на сервер. Метод GET имеет ограничение по размеру: в строке запроса может быть отправлено только 1024 символа. Метод GET отправляет информацию с использованием заголовка QUERY_STRING и будет доступен в вашей программе CGI через переменную окружения QUERY_STRING.
Вы можете передавать информацию, просто конкатенируя пары ключей и значений вместе с любым URL-адресом, или вы можете использовать теги HTML для передачи информации с использованием метода GET.
Шаг № 2: Добавление HTML
Первое, что вам нужно сделать, это открыть папку, в которой находится скрипт Python, и создать папку под названием «templates». Когда мы впервые запустили это, мы попытались указать имя «templates» в качестве имени папки, и вся программа вылетела и не работала. Поэтому обязательно назовите папку «templates». В этой папке «templates» создайте файл index.html с вашим HTML-кодом. Затем используйте render_template() и передайте index.html в качестве аргумента. Теперь, если вы запустите «flask run» в терминале, ваш HTML-код должен отобразиться:
html-код (index.html) на данный момент выглядит следующим образом:
И код файла Python (main.py) выглядит следующим образом:
Последний будет отображать простую HTML-страницу.
Передача контрольных данных в программу CGI
Флажки используются, когда требуется выбрать более одного параметра.
Вот пример кода HTML для формы с двумя флажками:
Ниже приведен флажок checkbox.cgi для обработки ввода, заданного веб-браузером, для кнопки флажка.
Получение файлов cookie
Ниже приведен пример извлечения файлов cookie.
Это дает следующий результат для файлов cookie, установленных вышеуказанным скриптом:
Переменные среды CGI
Все программы CGI имеют доступ к следующим переменным среды. Эти переменные играют важную роль при написании любой программы CGI.
Вот небольшая программа CGI для перечисления всех переменных CGI. Нажмите эту ссылку, чтобы увидеть результат Get Environment
Передача данных Drop Down Box в программу CGI
Drop Down Box используется, когда у нас есть много доступных опций, но будет выбран только один или два.
Вот пример кода HTML для формы с одним выпадающим списком:
Ниже приведен сценарий dropdown.py для обработки ввода, заданного веб-браузером.
Веб-браузер
Чтобы понять концепцию CGI, давайте посмотрим, что происходит, когда мы нажимаем на гипер ссылку для просмотра определенной веб-страницы или URL-адреса.
Архитектурная схема CGI
Привет, Мир! Это моя первая программа CGI
Этот скрипт hello.py: это простой скрипт Python, который записывает свой вывод в файл STDOUT, т. е. на экран. Существует одна важная и дополнительная функция, которая является первой строкой для печати. Content-type: text/html\r\n\r\n . Эта строка отправляется обратно в браузер и указывает тип содержимого, отображаемый на экране браузера.
К настоящему времени вы, должно быть, поняли базовую концепцию CGI, и вы можете написать много сложных программ CGI, используя Python. Этот скрипт может взаимодействовать с любой другой внешней системой также для обмена информацией, такой как РСУБД.
Читайте также: