2016-10-14 4 views
0

Я изо всех сил пытаюсь понять это в своей голове с широкой точки зрения, но я постараюсь объяснить как можно лучше, если что-то непонятно пожалуйста, прокомментируйте, прося дополнительную информацию.Возвращение нескольких значений в виде с использованием Flask (Python)

Прямо сейчас у меня есть функция python, которая извлекает имя пользователя и их идентификатор пользователя из внутреннего API на моем рабочем месте, привязанного к имени пользователя для каждого рабочего, и затем перенаправляется на веб-страницу со следующей таблицей , (Я использую имя пользователя в качестве основного способа получения данных, я предполагаю, что это можно считать первичным ключом?)

@app.route('/user/<username>') 
def issue(username) 

    json = get_json(username) 

    _user = get_username(json) 
    _id = get_id(json) 

    print "User: " + _user 
    print "ID: " + _id 

(Функции get_username() и get_id() разобрать через файл JSON и получить данные, которые мне нужно)

Способ доступа пользователей к этой странице находится на главной странице webapp, есть текстовое поле, они вводят имя пользователя, затем перенаправляют их на страницу 127.0.0.1:5000/user/username, которая в свою очередь, вызывает эту функцию выше.

Это дает очень простую веб-страницу с только именем пользователя и идентификатором. Однако как я могу отображать несколько имен и идентификаторов с одним запросом.

Так, например:

1. User goes to home page 
2. User enters "John Doe, Harry Smith, Alex Boggs" into the text box and hit submit 
3. They are then presented with this information 

User: John Doe 
ID: 127 

User: Harry Smith 
ID: 412 

User: Alex Boggs 
ID: 322 

Я не совсем уверен, где даже начать делать это, так как я только знаю, как передать один аргумент в то время.

Примечание: в идеале данные фактически не привязаны к URL-адресу, а вместо этого будут генерироваться под полем поиска на главной странице, но я соглашусь на любое решение.

ответ

1

Если пользователь вводит John Doe, Harry Smith, Alex Boggs в текстовом поле, то вы должны получить John Doe, Harry Smith, Alex Boggs в термосе, и вы должны разделить его "John Doe, Harry Smith, Alex Boggs".split(", "), чтобы получить список имен.

Теперь вы можете использовать цикл for для печати User, ID для каждого имени.

0

Использование «путь» конвертер как этот @app.route('/something/<path:name_list>') Поэтому, когда запрос пользователя по URL: site/something/name1/name2/name3 вы получите список имен

Или вы можете создать свой собственный конвертер путем создания класса преобразователя.

from werkzeug.routing import BaseConverter 
class ListConverter(BaseConverter): 
    def to_python(self, data): 
     return data.split(',') 

    def to_url(self, data) 
     ','.join([BaseConverter.to_url(each) for each in data]) 

Затем добавьте этот конвертер для применения преобразователя Словаря следующим образом:

app.url_map.converters['list']=ListConverter 

Теперь вы можете использовать список вашего конвертер для реализации этой функции:

app.route('/something/<list:name_list>') 

И пользователь может запросить URL : site/something/name1,name2,name3