![](/img/trans.png)
[英]How to send JSON data from front-end JavaScript to the Back-end Server built by using Python Flask
[英]Python Flask - Processing input obtained from front-end in the back-end
這更多是關於在哪里可以找到我將如何做到這一點的問題,而不是詢問如何做到這一點。 我確信這已經涵蓋得很好,我只是在努力闡明我可以用來谷歌並找出答案的正確術語。
無論如何 - 我有一個 Python Flask Web 應用程序。 在網頁上,有一個請求用戶輸入的輸入框。 我希望發生的事情是在后台用戶輸入時發生一些魔法。 在我自己的場景中,我想獲取一個 URL,然后使用 bs4 來挑選我需要的內容並將其顯示在網頁上。
為簡單起見,我會要求一些簡單的東西,然后我可以從那里開始:如果我要求用戶指定一個數字,然后按“提交”,我如何將數字乘以 10?
如果我的表單代碼是index.html
:
<form class="form-horizontal" role="form" method="post" action="/">
{{ form.csrf_token }}
<fieldset>
<div class="form-group">
<label for="GetNum" class="col-lg-2 control-label">Enter Number</label>
<div class="col-lg-6">
<input type="text" id="GetNum" name="GetNum" class="form-control" value="">
</div>
<input class="btn btn-success" type="submit" value="Calculate">
</div>
</fieldset>
</form>
我注意到我可以通過<p>form.request.GetNum</p>
將輸入打印到一個段落。
現在對於這個問題的例子,后端功能的代碼將是:
import math
GetNum = 10 #should be form.request.GetNum value
CalcResult = GetNum*1000
print CalcResult # or {{ CalcResult.data }} or something in index.html
我的控制器( app.py
)看起來像:
@app.route('/', methods=['GET', 'POST'])
@login_required
def home():
error = None
form = PostForm(request.form) # unrelated to question, but will this clash?
if .. :
do something
return redirect(..)
else:
do something else..
return render_template(..)
我擔心的是,如果我必須將數學函數放在那里, home
函數最終會產生大量代碼。 所以 tl;dr,我將如何在我的代碼中實現后端功能? (或者請給我提供閱讀材料,謝謝!)
另一件事是我的“/”頁面上已經有一個表單,我是否必須重命名表單,例如 form1 form2 因為它們會發生沖突還是可以?
在你的代碼庫的其他地方,或者在同一個文件中,或者更有可能是一個模塊或包,你可以定義那個復雜的任務。 讓我們在與其他代碼相同的目錄中創建一個簡單的模塊complicated.py
,然后定義復雜的任務:
def do_really_complicated_thing(info):
# lots of complicated steps
return really_complicated_data
然后在我們的視圖代碼中,我們可以使用它而不是嵌入它:
from complicated import do_really_complicated_thing
@app.route('/', methods=['GET', 'POST'])
@login_required
def home():
error = None
form = PostForm(request.form)
if form.validate_on_submit() :
info = form.info.data
complicated_task = do_really_complicated_thing(info)
return render_template('something', results=complicated_task)
因此,簡而言之——您正在尋找的術語是包和模塊,它們幫助您的代碼更整潔和可重用。
至於沖突表單——您可以將表單定位到只處理該表單的特定路由,這比在單個路由中驗證/解析不同表單要干凈得多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.