Руководство по Python Bottle (Перевод) Часть 6 - Templates (о Шаблонах)
PythonВ предыдущей части (Руководство по Python Bottle (Перевод) Часть 5 — Request Data (данные в запросе)) мы рассмотрели основные аспекты относящиеся к передаваемым данным в запросах, в этой части мы вкратце рассмотрим использование шаблонов.
Bottle имеет быстрый и мощный встроенный механизм шаблонов, который называется SimpleTemplate Engine. Для рендеринга шаблона вы можете использовать функцию template() или декоратор view(). Все, что вам нужно сделать, это предоставить имя шаблона и переменные, которые вы хотите передать шаблону в качестве аргументов. Вот простой пример того, как обратиться к шаблону:
@route('/hello')
@route('/hello/<name>')
def hello(name='World'):
return template('hello_template', name=name)
Данный код загрузит файл шаблона hello_template.tpl и отобразит его с установленной переменной name. Bottle будет искать шаблоны в папке ./views/ или в любой папке, указанной в списке bottle.TEMPLATE_PATH.
Читаль далее...
Руководство по Python Bottle (Перевод) Часть 5 - Request Data (данные в запросе)
PythonВ предыдущей части (Руководство по Python Bottle (Перевод) Часть 4 — Создание контента) мы рассмотрели основные аспекты относящиеся к передаваемому контенту, в этой части мы рассмотрим данные передаваемые в запросах.
Файлы Cookie, HTTP-заголовки, поля HTML форм и другие данные запроса доступны через глобальный объект request. Этот специальный объект всегда ссылается на текущий запрос, даже в многопоточных средах, где одновременно обрабатываются сразу несколько клиентских подключений:
from bottle import request, route, template
@route('/hello')
def hello():
name = request.cookies.username or 'Guest'
return template('Привет {{name}}', name=name)
Объект request является подклассом от BaseRequest и имеет очень богатый API для доступа к данным. Здесь будут рассмотрены только наиболее часто используемые функции, этого должно быть достаточно для начала.
Читаль далее...
Руководство по Python Bottle (Перевод) Часть 4 - Создание контента
PythonВ предыдущей части (Руководство по Python Bottle (Перевод) Часть 3 — Маршрутизация запросов) мы рассмотрели основные аспекты касающиеся маршрутизации запросов, в этой части будут рассмотрены аспекты относящиеся к передаваемому контенту.
Создание контента
В чистом стандарте WSGI диапазон возвращаемых из приложения типов очень ограничен. Приложения должны возвращать строки с возможностью разбиения их на набор байт. Можно вернуть строку (разбив её на части), но большинство серверов это заставляет передавать контент символ за символом. Строки в Unicode не допускаются вообще. Это не очень практично.
Bottle гораздо более гибок и поддерживает широкий спектр типов. Он автоматически добавляет заголовок Content-Length, когда это возможно, и автоматически кодирует Unicode, что облегчает работу разработчика. Ниже приведен список типов данных, которые могут быть возвращены из приложения, и краткое описание того, как они обрабатываются платформой:
Читаль далее...
Руководство по Python Bottle (Перевод) Часть 3 - Маршрутизация запросов
PythonВ предыдущей части (Руководство по Python Bottle (Перевод) Часть 2 — Hello World) мы создали простое Web приложение, с одним единственным маршрутом, вот та часть кода с маршрутизацией из примера «Hello WOrld»:
@route('/hello')
def hello():
return "Hello World!"
В этом примере декоратор route() связывает URL путь с вызываемой функцией, и добавляет новый маршрут.
Теперь давайте добавим ещё один маршрут:
@route('/')
@route('/hello/<name>')
def greet(name='Незнакомец'):
return template('Здравствуй {{name}}, как дела?', name=name)
(Не забываем ипортировать необходимые библиотеки: from bottle import template)
Данный пример демонстрирует сразу две важные вещи: Вы можете привязывать более одного маршрута к одной вызываемой функции, и вы можете добавлять шаблоны URL адресов и получать доступ к параметрам по ключевым словам.
Читаль далее...
Руководство по Python Bottle (Перевод) Часть 2 - Hello World
PythonВ предыдущей части мы рассмотрели установку Bottle:
Руководство по Python Bottle (Перевод) Часть 1 — Установка
В этой части мы пойдем дальше и рассмотрим простой пример приложения сайта «Hello World».
2. Простой пример («Hello World!»)
Здесь предполагается что у вас уже установлен Bottle, либо библиотека скопирована в папку проекта.Начнем с очень простого примера «Hello World!»:
Создание Hello World на Bottle...
Python python 3 bottle руководство tutorial перевод hello world route
Руководство по Python Bottle (Перевод) Часть 1 - Установка
PythonЭто руководство познакомит вас с концепциями и возможностями фреймворка Bottle. Данное руководство можно читать от начала и до конца, как учебный материал для ознакомления. Также можно использовать руководство как справочник для ознакомления с интересующими особенностями фреймворка Bottle.
Данное руководство является адаптированным переводом информации с ресурса BOTTLEPY.ORG от 20.04.2017г.
В руководстве местами содержатся некоторые мои комментарии и дополнения. Поэтому, это не дословный перевод, но надеюсь достаточно качественный.
Итак, приступим.
Ошибка - UnicodeEncodeError: 'mbcs' codec can't encode characters in position 0--1: inval id character
PythonОщибка: UnicodeEncodeError: 'mbcs' codec can't encode characters in position 0--1: inval id character
Происходит при попытке запустить проект командой: python manage.py runserver
Лечение:
Ищем файл: python\lib\site-packages\django\utils\autoreload.py
Затем добавляем в функцию restart_with_reloader строчку:
new_environ['PATH'] = os.path.abspath(new_environ['PATH'].encode('ascii', 'replace'))
Должно получиться как-то так:
def restart_with_reloader():
while True:
args = [sys.executable] + ['-W%s' % o for o in sys.warnoptions] + sys.argv
if sys.platform == "win32":
args = ['"%s"' % arg for arg in args]
new_environ = os.environ.copy()
new_environ["RUN_MAIN"] = 'true'
new_environ['PATH'] = os.path.abspath(new_environ['PATH'].encode('ascii', 'replace'))
exit_code = os.spawnve(os.P_WAIT, sys.executable, args, new_environ)
if exit_code != 3:
return exit_code
После этих изменений, лично у меня всё заработало, Python 3.4 + Windows 10.
Надеюсь и у вас всё получится. Комментировать...
Установка Pillow на Python 3 под Windows
PythonНиже приведен рабочий пример (у меня сработало на версиях 3.5 и 3.4) установки модуля Pillow.
Для установки нам понадобится Python версии 3.5 или 3.4 (на версии 3.6 на сегодняшний день 28.12.2016 — не работает)
Скачиваем, устанавливаем — в этом я думаю трудностей не возникнет.
Далее, устанавливать модуль будем с помощью PIP, но…
Далее всё действие происходит в командной строке:
Для начала выполним вот эту команду:
python -m pip install --upgrade pip wheel setuptools
(без нее, ну никак не «заведётся»)
Затем всё просто:
pip3 install pillow
Вот и всё! Комментировать...
Настраиваем кодировки в Visual Studio для Python
PythonВообщем ситуация такая. Решил я поизучать Python. Посмотрел разные среды разработки, и решил остановиться на уже знакомой и уютненькой Visual Studio, тем более, что по работе в основном на C# писать приходится, установлена, удобная, привычная. Короче приступил к написанию своего первого Hello World-а.
Написал вот такое:
name = input ('Введите слово: ')
print ('Ваше слово ', name)
И вместо русских букв в консоли увидел кракозябры. :(
Покопав немного «интернеты», нашёл рекомендацию указывать кодировку в начале файла так:
# -*- condig: utf-8 -*-
Сделал, не помогло… :(
Стал копать дальше.
Студия фалы сохраняет по умолчанию в кодировке Win1251 — ага!!! подумал я!!!
Правим:
File -> Advanced Save Options

Это действие уже помогло, но лишь частично. По команде print русский текст стал выводиться корректно. А вот текст в команде input остался кракозябрами.
Но и этой проблеме решение есть:
Tools -> Options -> Pyton Tools -> Debugging

Убираем галочку «Tee program output to Debug Output window»
После этого действия всё работает корректно, буквы русские во всех случаях.
Мне помогло, надеюсь и вам поможет. Комментировать...
Работа с Postgresql в C#
Не так давно занялся разработкой приложения на C# работающего на базе PostreSQL, появилась информаци (читать далее...)
1098Работа с MySQL в C#
Надеюсь данная публикация не даст читателям повторить мои ошибки и поможет сделать изначально правил (читать далее...)
648Работа со строками в Oracle (PL/SQL)
Основные способы обработки строковых значений в Oracle. В этой публикации я приведу основные функции (читать далее...)
628Поиск и регулярные выражения в MySQL
СУБД MySQL имеет различные инструменты для осуществления поиска, среди которых оператор LIKE, осущес (читать далее...)
471Передача параметров между формами в C#
Часто возникает необходимость передать определённые параметры между формами в одном приложении, напр (читать далее...)
455OpenXML - Пример создания Excel файла на C#
В данной публикации приведен пример генерации Excel файла при помощи библиотеки OpenXML. Отличие это (читать далее...)
438Установка русской кодировки на уже созданную базу данных (смена COLLATION)
Полезный пример изменения кодировки (COLLATION) на уже созданной базе данных. В данном примере устан (читать далее...)
412Работа с XML в Oracle PL/SQL (Часть 1)
В этой публикации я приведу основные способы работы с XML в Oracle, которые сам использую. Здесь буд (читать далее...)
394Курсоры в MSSQL - перебор выборки в цикле.
Команды манипулирования данными SELECT, UPDATE, DELETE работают сразу с группами строк. Эти группы, (читать далее...)
347Функция Oracle TO_DATE (PL/SQL)
Функция TO_DATE — преобразует строку в переменную времени DATE. Синтаксис: TO_DATE(исходная_строка, (читать далее...)
321