如何在Flask模板中解码URL字符串

7

我正在使用Flask。

在我的模板中,我使用以下代码来编码一个字符串。

encodeURIComponent(mytag)

现在我想在另一个模板中进行解码。
以下是字符串的样子。

%26lt%3B!--Afff%20Tracking%20Tag--%26gt%3B%0A%26lt%3Bimg%20src%3D%22http%3A%2F%2Fcm.g.doubleclick.net%2Fpixel%3F%0Agggg_nid%3Dhff%26gggg_cm%26avid%3David3966173574%26campaign_id%3Dundefined%22%20%2F%26gt%3B

在模板中,我该如何解码字符串?
{% for crid, object in tag_handler.iteritems() %}
    <script>var x = decodeURI("{{object['tag_display']}}"); alert(x);</script>
        <div id="tagBox" style="display: block;width: 700px">
            <pre class="prettyprint">
                <code class="language-html">    
                    {{object['tag_display']}}
                </code>
            </pre>
       </div>

{% endfor %}

我正在使用Google Pretty显示字符串。

1
你想在JavaScript还是Python中进行编码/解码?这个答案可能会对你有所帮助。 - jadkik94
首选Python。但JS也可以使用。 - Tampa
1
尝试使用链接答案中建议的urllib2.unquote - jadkik94
1个回答

5
你可以使用Python的urllib库。有两个选项,unquote和unquote_plus。 详细说明请参见https://unspecified.wordpress.com/2008/05/24/uri-encoding/。简而言之,如果你的URL使用“+”表示空格,请选择unquote_plus,并记住HTML表单会自动进行此操作。
from urllib import unquote_plus
@app.route('/foo', methods=['POST'])
def foo():
    mytag = request.form['params']
    print unquote_plus(mytag)

5
在Python 3中,unquote_plus可以在urllib.parse中找到,而不是在urllib中。 - Alex Peters
2
Flask会自动解码表单数据,不需要在框架内进行解码/解引用。 - Rick
@Rick,这个问题是关于在模板中解码URL字符串,而不是表单数据。这个答案可以用来为该模板提供格式正确的URL字符串。 - Sevak Avakians

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接