2017-01-08 2 views
0

Я пишу основной веб-сайт, который до сих пор может принимать входные данные из формы и добавлять значения в файл json. Я также могу отображать данные json на странице «json». Для этого я делаю (json.dump (myGetJsonStuffFunc), indent = 4, sort_keys = True). Это творит чудеса для части API на сайте.Выдержка из json в html с использованием фляжки

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

На данный момент у меня есть функция SetValuesToHtml, которая, я надеюсь, установит значение ключа для переменной, и это вызывается на моем маршруте перед вызовом render_template. Но я не могу понять, как получить доступ ни к переменной, ни к информации, хранящейся в ней.

Это мой полный views.py: http://pastebin.com/cneKMtZf

проблемы (? Я надеюсь) таковы:

@app.route('/collection', methods = ['GET']) 
def collectionH(): 
    data = SetValuesToHtml() 

return render_template(
    'collection.html', 
    title='This is our collection' 
    ) 

и функция:

def SetValuesToHtml(): 
    checkData() 


    with open(filename+".json", "r") as infile: 
     data = json.load(infile) 
     infile.close() 
     pass 

    for tech in data['techs']: 
     return data.endposition 
    pass 

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

Спасибо

+0

Есть проблемы с вашим отступом. 'with open ...' не является частью тела функции. Даже если этот отступ правилен в вашем фактическом коде, вы не можете «возвращать» в цикле 'for', потому что' return' прервет функцию на первой итерации. – roganjosh

+0

Пара других вещей: Нет необходимости вызывать 'close()' в файле, который был открыт с помощью 'with'. Кроме того, я не понимаю предполагаемую функцию 'pass' в нескольких точках вашего кода. Но отредактируйте свой вопрос, чтобы убедиться, что отступ соответствует вашему собственному коду. – roganjosh

+0

Я не заметил, что когда я вставлял код, он не автоматически выравнивал его так, как это было в моей идее. Я извиняюсь! Что касается закрытия, мне сказали, чтобы он всегда закрывал файл после открытия, чтобы обеспечить согласованность. Поскольку я не сталкивался с проблемами, я предположил, что это сработало. Передано, которое я преподавал, должно позволить функции знать, что она покинула блок и должна двигаться дальше. Вернитесь назад при повторении или продолжении. Не знал, что возвращение сработало понравилось. – Berimbolinho

ответ

0
def SetValuesToHtml(): 
    checkData() 


    with open(filename+".json", "r") as infile: 
     data = json.load(infile) 
     infile.close() 
     pass 

    for tech in data['techs']: 
     return data.endposition 
     pass 

Я подозреваю, что последние несколько строк должны быть

return data['techs']['endpos'] 

вместо

for tech in data['techs']: 
     return data.endposition 
     pass 

По остальной части кода, данные [ 'санитаров' ] - это dict, а не объект, а ключ, используемый в другом месте, - это «endpos», а не «endposition».

+0

Я пробовал это, но просто получил новую ошибку. Почитаю об этом. Спасибо за ваше время. – Berimbolinho

+0

Нет проблем. Надеюсь, вы поняли это. –

Смежные вопросы