2014-12-11 7 views
0

Я хочу запросить мою базу данных и вернуть результаты в javascript.Как ссылаться на возвращаемые данные в javascript из веб-фреймворка, такого как бутылка?

JavaScript файлы, которые я подаю, используя бутылку

@app.route('/static/<filename:path>', name='static') 
    def send_static(filename): 
     return static_file(filename, root='static') 

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

@app.route('/static/js/app.js') 
    def ello(): 
     cur.execute("SELECT * FROM places") 
     places= cur.fetchall() 
     return {'places':places} 

, а затем в том, что app.js файл, я хочу, чтобы иметь возможность сделать что-то вроде:

console.log(places); 

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

Uncaught SyntaxError: Unexpected token { 

как предложено здесь: https://stackoverflow.com/a/14157401/1543640

+0

Дом3272. Помог ли вам ответ? Есть ли что-то, что еще неясно? – Timusan

ответ

1

Как он смотрит на меня, вы пытаетесь создать файл JavaScript через Python. Это звучит как очень неудобный и неудобный способ обмена данными между двумя мирами.

Обычной практикой для связи между передним концом (JavaScript) и фоновым (приложение Python в вашем случае) через JSON (который, в свою очередь, является JavaScript). На базовом уровне вы позволяете своему приложению Python создавать JSON и делать его доступным по определенному маршруту для использования вашего JavaScript.

Примером может быть:

@app.route('/some/route/to/consume') 
def fetch(): 
    """ 
    Fetch all the fancy stuff from the database. 
    """ 
    db = Database() 
    # Fetch all records, convert them into JSON 
    result = json.dumps(db.get_stuff()) 
    return result 

Эта функция будет получать все записи из базы данных (с вымышленной функцией db.get_stuff()) и, конвертировать результат в действительный JSON и вернуть его. Важным битом является функция json_dumps() из модуля Python json. Он преобразует действительные структуры данных Python в действующие структуры данных JSON.

Далее вы должны написать свой фактический файл JavaScript, чтобы использовать этот JSON и позволить ему делать все, что вы хотите. Например, это можно сделать с помощью вызова XHR (AJAX).

Если данные, которые будут выставлены на вашем маршруте, не являются общедоступными, следует учитывать общие правила безопасности и защищать маршрут от нежелательных глаз.