簡體   English   中英

如何引用瓶子等Web框架中的javascript返回的數據?

[英]How to reference returned data in javascript from a web framework like bottle?

我想查詢我的數據庫,並將結果返回給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模板,效果很好,但是我嘗試過的javascript結果都在

    Uncaught SyntaxError: Unexpected token {

如此處建議的那樣: https : //stackoverflow.com/a/14157401/1543640

在我看來,您正在嘗試通過Python 創建一個JavaScript文件。 聽起來這在兩個世界之間交換數據非常尷尬且不方便。

在前端(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並返回。 重要的一點是Python json模塊中的json_dumps()函數。 它將有效的Python數據結構轉換為有效的JSON數據結構。

接下來,您應該編寫您的實際JavaScript文件以使用該JSON,並讓它做您想做的任何事情。 例如,這可以通過XHR調用(AJAX)完成。

如果將在您的路線上公開的數據不是公開的,請記住通用的安全做法,並保護該路線以免受到不必要的注意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM