Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 210

Или же вы можете передать аргументы как параметры команды GET (сохраните

файл как flask3b.py):

from flask import Flask, render_template, request

app = Flask(__name__)

@app.route('/echo/')

def echo():

thing = request.args.get('thing')

272

Глава 9. Распутываем Всемирную паутину

place = request.args.get('place')

return render_template('flask3.html', thing=thing, place=place)

app.run(port=9999, debug=True)

Запустите новый сценарий сервера:

$ python flask3b.py

В этот раз используйте следующий URL:

http://localhost:9999/echo?thing=Gorgo&place=Wilmerding

Вы должны увидеть следующее:

Say hello to my little friend: Gorgo. Alas, it just destroyed Wilmerding!

Когда команда GET используется в URL, любые аргументы должны передавать-

ся в формате &key1=val1&key2=val2&...

Вы также можете использовать оператор словаря **, чтобы передать несколько

аргументов в шаблон с помощью одного словаря (назовите файл flask3c.py):

from flask import Flask, render_template, request

app = Flask(__name__)

@app.route('/echo/')

def echo():

kwargs = {}

kwargs['thing'] = request.args.get('thing')

kwargs['place'] = request.args.get('place')

return render_template('flask3.html', **kwargs)

app.run(port=9999, debug=True)

**kwargs действует как конструкция thing=thing, place=place. Используя этот

словарь, можно сэкономить немного времени, если входных аргументов много.

Язык шаблонов jinja2 способен на гораздо большее. Если вы работали на PHP,

то увидите много похожих возможностей.

Веб-серверы, не использующие Python

До этого момента мы использовали простые веб-серверы: http.server из стандарт-

ной библиотеки или сервера отладки Bottle и Flask. На производстве вам нужно

запускать код на более быстрых серверах. Как правило, вы выбираете один из сле-

дующих вариантов:

 Apache с модулем mod_wsgi;

 Nginx с сервером приложений uWSGI.

Оба они работают хорошо: Apache, скорее всего, более популярен, а у Nginx

имеется репутация стабильного и тратящего меньше памяти сервера.

Веб-серверы

273

Apache

Лучшим WSGI-модулем Apache (http://httpd.apache.org/) является mod_wsgi (https://

code.google.com/p/modwsgi/). Он может запускать код, написанный на Python, внут-

ри процесса Apache или в отдельном процессе, который обменивается данными