Руководство по Python Bottle (Перевод) Часть 6 - Templates (о Шаблонах)

В предыдущей части (Руководство по 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 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 Bottle (Перевод) Часть 3 — Маршрутизация запросов) мы рассмотрели основные аспекты касающиеся маршрутизации запросов, в этой части будут рассмотрены аспекты относящиеся к передаваемому контенту.

Создание контента


В чистом стандарте WSGI диапазон возвращаемых из приложения типов очень ограничен. Приложения должны возвращать строки с возможностью разбиения их на набор байт. Можно вернуть строку (разбив её на части), но большинство серверов это заставляет передавать контент символ за символом. Строки в Unicode не допускаются вообще. Это не очень практично.

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

Читать дальше →

Руководство по Python Bottle (Перевод) Часть 3 - Маршрутизация запросов

В предыдущей части (Руководство по 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

В предыдущей части мы рассмотрели установку Bottle:
Руководство по Python Bottle (Перевод) Часть 1 — Установка

В этой части мы пойдем дальше и рассмотрим простой пример приложения сайта «Hello World».

2. Простой пример («Hello World!»)
Здесь предполагается что у вас уже установлен Bottle, либо библиотека скопирована в папку проекта.

Начнем с очень простого примера «Hello World!»:

Создание Hello World на Bottle...

Руководство по Python Bottle (Перевод) Часть 1 - Установка

Это руководство познакомит вас с концепциями и возможностями фреймворка Bottle. Данное руководство можно читать от начала и до конца, как учебный материал для ознакомления. Также можно использовать руководство как справочник для ознакомления с интересующими особенностями фреймворка Bottle.
Данное руководство является адаптированным переводом информации с ресурса BOTTLEPY.ORG от 20.04.2017г.

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

Итак, приступим.
Читать дальше →

Ошибка - UnicodeEncodeError: 'mbcs' codec can't encode characters in position 0--1: inval id character

Ощибка: 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

Ниже приведен рабочий пример (у меня сработало на версиях 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. Посмотрел разные среды разработки, и решил остановиться на уже знакомой и уютненькой Visual Studio, тем более, что по работе в основном на C# писать приходится, установлена, удобная, привычная. Короче приступил к написанию своего первого Hello World-а.

Написал вот такое:
name = input ('Введите слово: ')
print ('Ваше слово ', name)


И вместо русских букв в консоли увидел кракозябры. :(

Покопав немного «интернеты», нашёл рекомендацию указывать кодировку в начале файла так:
# -*- condig: utf-8 -*-


Сделал, не помогло… :(
Стал копать дальше.
Студия фалы сохраняет по умолчанию в кодировке Win1251 — ага!!! подумал я!!!
Правим:
File -> Advanced Save Options
Меню File Advanced Save Options

Это действие уже помогло, но лишь частично. По команде print русский текст стал выводиться корректно. А вот текст в команде input остался кракозябрами.

Но и этой проблеме решение есть:
Tools -> Options -> Pyton Tools -> Debugging
Tools Options Python Tools Debugging
Убираем галочку «Tee program output to Debug Output window»

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