2016-12-07 1 views
0

Я пытался передать значение q во второй @ app.route в течение некоторого времени, но не имел успеха.Как переносить переменные запроса с одной страницы html на другой?

@app.route("/results") 
def results(): 
    q = request.args.get('q') 
    r = requests.get('http://api.yummly.com/v1/api/recipes?_app_id=MYAPPID&_app_key=MYAPPKEY&requirePictures=true&q= %s' % q) 
    data = r.json() 
    return render_template("results.html", recipename = data['matches'][0]['recipeName']) 

@app.route("/recipe") 
def recipe(): 
    r = requests.get('http://api.yummly.com/v1/api/recipes?_app_id=MYAPPID&_app_key=MYAPPKEY&requirePictures=true&q= %s' % q) 
    data = r.json() 
    ID = data["matches"][0]['id'] 
    rr = requests.get('http://api.yummly.com/v1/api/recipe/%s?_app_id=dd85df7a&_app_key=0b187b4352ca796bc89a4600dfad0f06' % ID) 
    rdata = rr.json() 
    return render_template("recipe.html", url = rdata['attribution']['url']) 

Любая помощь в отношении того, как передать это значение, будет очень признательна.

+0

Я не вижу, что первый маршрут _calls_ второй, так как он когда-либо пройдет? –

+0

хорошо, как первый маршрут вызовет второй? это то, что вызывало у меня проблемы –

+0

См. мой ответ ниже. –

ответ

1

Первый маршрут не называется вторым, поэтому вводить в заблуждение, чтобы сказать, что вы хотите «передать» данные.

Это звучит, как вы хотите, первый маршрут к сохранить данные где-нибудь, а второй маршрут прочитать данных. Существует несколько способов сделать это, например, сохранить данные в обычном файле или в базе данных. Однако тогда вам нужно беспокоиться о том, что данные одного пользователя видны другим пользователям, поэтому лучше всего сохранить данные в сеансе.

У вас есть еще одна проблема: поскольку между двумя маршрутами нет прямой связи, как вы обеспечиваете синхронизацию? Что делать, если пользователь посещает второй маршрут, не посещая первый?

Одним из решений были бы изменить свой второй маршрут таким образом, требуют данных, передаваемых в качестве аргумента, а не в зависимости от некоторого предыдущего маршрута, который может или не может быть посетили недавно (или когда-либо!)

+0

Благодарю вас, как бы вы пропустили аргумент, вот что я намеревался сделать, но не смог узнать, как –

+0

Первый маршрут уже имеет код для извлечения аргумента: 'q = request.args.get ('д') '. Просто используйте тот же код во втором маршруте. Конечно, это требует, чтобы ваши пользователи _поставляли этот аргумент при посещении второго маршрута. –