Створюємо простий блог на 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 ми побачимо наше повідомлення:

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

Розберемо код:

  • Імпортуємо сам Ботл, та функцію для запуску нашого дев. сервера
  • Присвоєнням створюємо наш застосунок app
  • @app.route('/') - декоратор-маршут, який прикріплює урл до нашої функції-відображення, в нашому випадку - це корінь сайту.
  • Повертаємо текст, також ми можемо повертати шаблони, статичні файли, та інше.
  • Запускаємо наш застосунок, з вказаним хостом та портом.

Динамічні урл

Функція-відображення може містити динамічні маршути. Динамічні маршути позначаються назвою змінної, взятої в кутові дужки(наприклад ), це відповідає одному, або більше символам, до наступного слешу(/). Наприклад, маршут '/hello/' приймає запити як з _ '/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)

Так само запускаємо:

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

Що змінилося? Ми змінили маршут в декораторі. А також передаємо змінну з даними динамічного урл в нашу функцію-відображення, та повертаємо її в тексті, нічого складного :)

Також до динамічних маршутів ми можемо застосовувати фільтри:

  • **: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, урл не знайдено:

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

В прикладі нижче нам висвітить помилку 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 24
Приєднався: 1 рік тому
Коментарі (0)

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

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

Вхід