Простой Python. Современный стиль программирования (Любанович) - страница 158

>http://localhost:9999/echo/Gamera

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

>Say hello to my little friend: Gamera

Модифицируем наш пример и сохраним его в папке templates под именем flask3.html:

>

>

>Flask3 Example

>

>

>Say hello to my little friend: {{ thing }}.

>Alas, it just destroyed {{ place }}!

>

>

Второй аргумент в URL, echo, вы можете передать множеством способов.

Передача аргумента как части пути URL

С помощью этого метода вы просто расширяете URL (сохраните этот файл как flask3a.py):

>from flask import Flask, render_template

>app = Flask(__name__)

>@app.route('/echo//')

>def echo(thing, place):

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

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

Как обычно, остановите предыдущий сценарий тестового сервера, если он еще работает, и затем запустите новый:

>$ python flask3a.py

URL должен выглядеть так:

>http://localhost:9999/echo/Rodan/McKeesport

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

>Say hello to my little friend: Rodan. Alas, it just destroyed McKeesport!

Или же вы можете передать аргументы как параметры команды GET (сохраните файл как flask3b.py):

>from flask import Flask, render_template, request

>app = Flask(__name__)

>@app.route('/echo/')

>def echo():

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

>····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

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