Це вступна стаття із серії, розрахована на тих, хто вже знає основи мови програмування Пайтон, але малознайомі з веб-розробкою. Для початку приведемо опис фреймворку з офіційного сайту.
Ботл - швидкий, простий і легкий WSGI мікро веб-фреймворк для Пайтон. Він поширюється у вигляді одного файлу і не має ніяких залежностей, окрім стандартної Пайтон бібліотеки.
- Маршутизація: Запити до функцій відображень, з підтримкою статичних та динамічних адрес.
- Шаблони: Швидкий та "пайтонічний", вбудований шаблонний движок, та підтримка mako, jinja2 та cheetah шаблонизаторів.
- Утиліти: Зручний доступ до даних форм, завантажених файлів, кукі, заголовків та інших HTTP-орієнтованих метаданих.
- Сервер: Вбудований розробницький HTTP-сервер та підтримка paste, fapws3, bjoern, cherrypy або будь-якого WSGI HTTP сервера.
Інсталяція
Оскільки у Ботл не має залежностей, його можна просто завантажити в робочу теку:
$ wget http://bottlepy.org/bottle.py
Або за допомогою пакетних менеджерів Пайтону, або ОС:
$ sudo pip install bottle # рекомендовано
$ sudo easy_install bottle # альтернатива pip
$ sudo apt-get install python-bottle # працює для ОС debian, ubuntu, ...
Привіт світ!
Завжди прийнято починати саме з цього, тож ось наш код:
# -*- coding: utf-8 -*-
from bottle import Bottle, run
app = Bottle()
@app.route('/')
def index():
return 'Привіт світ!'
run(app, host='localhost', port=8080)
```
Запускаємо виконавши наш файл Пайтон інтерпретатором:
$ python hello.py
Тепер, якщо ввести в браузері localhost:8080 ми побачимо наше
повідомлення:
![](https://pp.vk.me/c620719/v620719041/140d9/JDSa7IVLHhA.jpg)
Розберемо код:
* Імпортуємо сам Ботл, та функцію для запуску нашого дев. сервера
* Присвоєнням створюємо наш застосунок app
* @app.route('/') - декоратор-маршут, який прикріплює урл до нашої функції-відображення, в нашому випадку - це корінь сайту.
* Повертаємо текст, також ми можемо повертати шаблони, статичні файли, та інше.
* Запускаємо наш застосунок, з вказаним хостом та портом.
**Динамічні урл**
Функція-відображення може містити динамічні маршути. Динамічні маршути
позначаються назвою змінної, взятої в кутові дужки(наприклад <name>), це
відповідає одному, або більше символам, до наступного слешу(/). Наприклад,
маршут _'/hello/<name>'_ приймає запити як з _ '/hello/python'_ так із
_'/hello/bottle'_, але не з _'hello'_, _'hello/'_, _'hello/python/bottle'_.
Видозмінимо наш попередній код:
# -*- coding: utf-8 -*-
from bottle import Bottle, run
app = Bottle()
@app.route('/hello/<name>')
def hello(name):
return 'Привіт, {0}!'.format(name)
run(app, host='localhost', port=8080)
Так само запускаємо:
![](https://pp.vk.me/c620719/v620719041/14143/9wSwHY7xQ7k.jpg)
Що змінилося? Ми змінили маршут в декораторі. А також передаємо змінну з
даними динамічного урл в нашу функцію-відображення, та повертаємо її в тексті,
нічого складного :)
Також до динамічних маршутів ми можемо застосовувати фільтри:
* **:int **тільки цілі числа.
* **:float **тільки десяткові числа.
* **:path** шлях, відповідає всім символам, в тому числі і слешу. Може бути використаним для збігу з більше ніж одною частиною шляху.
* **:re** дозволяє вам визначати регулярні вирази в полі конфігурації.
Кілька прикладів:
# -*- coding: utf-8 -*-
from bottle import Bottle, run
app = Bottle()
@app.route('/hello/<name:re:[a-z]+>')
def hello(name):
return 'Привіт, {0}!'.format(name)
run(app, host='localhost', port=8080)
І якщо в нашому урл на місці name будуть цифри, то нам висвітить помилку 404, урл не знайдено:
![](https://pp.vk.me/c620719/v620719041/1417b/0AeX9X9F19M.jpg)
В прикладі нижче нам висвітить помилку 404, якщо в урл буде хоча б один символ
не цифра.
# -*- coding: utf-8 -*-
from bottle import Bottle, run
app = Bottle()
@app.route('/hello/<digits:int>')
def index(digits):
return '{0}'.format(digits)
run(app, host='localhost', port=8080)
На цьому я завершую першу, вступну статтю. В наступній я детальніше розповім
про шаблонізатор. Дякую за увагу.
Ще немає коментарів