Створюємо простий блог на Bottle, частина 1

5 хв. читання

Це вступна стаття із серії, розрахована на тих, хто вже знає основи мови програмування Пайтон, але малознайомі з веб-розробкою. Для початку приведемо опис фреймворку з офіційного сайту.

Ботл - швидкий, простий і легкий 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)

На цьому я завершую першу, вступну статтю. В наступній я детальніше розповім
про шаблонізатор. Дякую за увагу.
Помітили помилку? Повідомте автору, для цього достатньо виділити текст з помилкою та натиснути Ctrl+Enter
Codeguida 5.6K
Приєднався: 8 місяців тому
Коментарі (0)

    Ще немає коментарів

Щоб залишити коментар необхідно авторизуватися.

Вхід / Реєстрація