Створюємо простий блог на Bottle, частина 1
Це вступна, коротка стаття із серії, розрахована на тих, хто вже знає основи мови програмування пайтон, але малознайомі з веб-розробкою. Для початку приведемо опис фреймворку з офіційного сайту.
Боттл це швидкий, простий і легкий 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 ми побачимо наше повідомлення:
Розберемо код:
- Імпортуємо сам боттл, та функцію для запуску нашого дев. сервера
- Присвоєнням створюємо наш застосунок 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)
Так само запускаємо:
Що змінилося? Ми змінили маршут в декораторі. А також передаємо змінну з даними динамічного урл в нашу функцію-відображення, та повертаємо її в тексті, нічого складного :)
Також до динамічних маршутів ми можемо застосовувати фільтри:
- :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, дана урл не знайдена:
В прикладі нижче нам висвітить помилку 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)
На цьому я завершую першу, вступну статтю. В наступній я детальніше розповім про шаблонізатор. Дякую за увагу.
539 6
Коментарі:
0
Vova Pytsyuk
Зробіть 3 частину.