flask和ajax,Flask flash和url_用于AJAX
我目前陷入了一個相當“大”的問題,我會盡量做到清晰和簡潔。
我正在用Python開發一個工具,使用Flask。它應該是一個內部網。我的想法是我有一個客戶頁面。有它的名字,許多其他信息,和一個龐大的清單。
信息已經寫入輸入字段,因此用戶只需在那里編輯它們,按enter鍵,頁面就會重新加載已編輯的信息(使用閃爍的消息和咆哮發出通知)。
這個龐大的清單迫使我使用AJAX遷移到一個系統,因為我希望它在用戶勾選框和輸入內容時“實時”更新,而不必重新加載頁面。
因此,我還將infos的基本輸入轉換為AJAX,以避免重新加載mage。
我遇到了兩個問題:
第一個是Flask的消息閃爍功能。我有一個方法可以更新數據庫中的客戶機名稱,閃爍一條消息(成功或失敗,取決于許多事情),然后再次顯示頁面。為了避免頁面重新加載,我使用AJAX管理表單提交。
問題是,我的python方法將刷新消息。一旦我回到我的html頁面(因為它是AJAX,所以沒有被重新加載),Jinja2的get flashed消息函數就不會返回任何東西,因為它沒有被更新。因此,我不可能找回那些閃現的信息。
我怎樣才能拿到這些?我看到的唯一解決方案是去掉flash的任何用法,編寫我自己的消息sysème,我將從該方法返回,然后用javascript處理。這看起來難以置信的愚蠢,因為flash是Flask的一個特性,它被AJAX變成了“無用的”?我覺得我好像錯過了什么。
(注意,到目前為止,我的flashed消息管理是在我的基本布局中進行的,它調用一個貫穿所有消息并顯示為咆哮通知的模板)
第二個問題涉及url。這是我的表單,用于編輯客戶名稱:
如您所見,action屬性使用url_for調用正確的方法來編輯客戶機。我的方法是這樣的:@mod.route('/edit//', methods=['POST'])
def edit_client_name(name):
所以url路徑是/edit/the_client_name。因此,在編輯之后,如果要重新編輯此名稱,則新URL是/edit/the_new_client_name。
顯然,一旦調用了方法,我的AJAX就必須更改這個action屬性,用新的URL替換它(以防用戶希望在不更改頁面/重新加載頁面的情況下重新編輯名稱)。這是我的第二期。
新名稱存儲在javascript中。操作仍然是舊的url。因此,我必須調用url_來使用新名稱。我發現完全沒有辦法將Javascript變量傳遞給Jinja2。
我要這個:url_for('clients.edit_client_name', name=client.name)
變成這樣:url_for('clients.edit_client_name', name=my_javascript_variable_one_way_or_another)
我只需要調用js函數來修改表單的一個屬性,然后用這個新的url修改我的action屬性,但是我沒有辦法做這個簡單的事情,比如給Jinja2一個javascript變量,這在我看來是不太可能的。
這是我的兩個問題。如何使flash與AJAX兼容?如何將javascript屬性傳遞給Jinja2?
我真心希望能找到解決這兩個“愚蠢”問題的辦法。我能看到的唯一解決方案是編寫我自己的消息傳遞系統,這將挫敗flash的目標,使它與看起來愚蠢的AJAX無用,并在我的模板中硬編碼URL,這完全挫敗了Flask使URL獨立于方法的最初興趣,URL的更改非常靈活。
謝謝。
總結
以上是生活随笔為你收集整理的flask和ajax,Flask flash和url_用于AJAX的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 打开ftp服务器上的文件夹时出错505,
- 下一篇: 串口服务器怎么测信号,串口服务器如何调试