【问题标题】:How to decode a url string in a flask template如何在烧瓶模板中解码 url 字符串
【发布时间】:2012-09-19 14:09:08
【问题描述】:

我正在使用烧瓶。

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

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 来显示字符串。

【问题讨论】:

  • 你想用js还是python编码/解码? This answer 可能会对您有所帮助。
  • 首选python。但是 JS 也可以工作
  • 按照链接答案中的建议尝试urllib2.unquote

标签: javascript python flask jinja2


【解决方案1】:

您可以使用 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)

【讨论】:

  • 在 Python 3 中,unquote_plus 可以在 urllib.parse 中找到,而不是 urllib
  • Flask 自动解码表单数据。没有必要在框架内解码/取消引用加号。
  • @Rick,问题是关于在模板中解码 URL 字符串,而不是在表单数据中。此答案可用于为该模板提供格式正确的 URL 字符串。
猜你喜欢
  • 2016-05-14
  • 2015-07-29
  • 1970-01-01
  • 1970-01-01
  • 2018-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多