2013-12-16 98 views
4

我是使用Flask和Jinja2模板進行網絡開發的新手。在模板中的我的HTML表格的行 一列是:在Flask中處理URL中的&符號

<td><a> href="/plot?label={{stats[0]}}">{{stats[0]}} </a></td> 

stats[0]是一個變量,它是一個字符串,可能包含一個「&」例如「雞蛋&垃圾郵件」。 現在在視圖(views.py):

@app.route("/plot", methods = ["GET", "POST"]) 
@login_required 
def on_plot(): 
    data = request.args 
    label_name = data['label'] 

在這種情況下,我得到dataImmutableMultiDict([(' Spam', u''), ('label', u'Eggs ')]) 這是不正確的。相反,我想ImmutableMultiDict([('label', u'Eggs & Spam ')])

那麼我該如何處理這種情況?我試着做{{stats[0]|escape}}但它不起作用。

回答

4

你想建立視圖中的網址,而不是使用url_for

<td><a> href="{{ url_for('on_plot', label=stats[0]) }}">{{stats[0]}} </a></td> 

url_for()方法會爲您構建一個查詢字符串,並適當地逃脫符號。

+0

對不起,我刪除了我以前的評論,因爲它不適用。即使我碰巧使用Flask,也沒有生成JS和HTML(只有Web服務),所以我在下面的問題中找到了我需要的東西,這與Flask和JS中的所有URL編碼無關:http: //stackoverflow.com/questions/332872/how-to-encode-a-url-in-javascript – Leonid