【问题标题】:How to route non-ascii URLs in Flask python如何在 Flask python 中路由非 ascii URL
【发布时间】:2018-09-25 14:08:15
【问题描述】:

大家下午好!

我在将我的 URL 地址路由到 Flask 时遇到问题,正是在网络浏览器中运行它。我想要的只是将尖锐的符号“#”和一些俄语单词(如“#привет”或“#ПомогитеМнеПожалуйста”)一起转移。

错误截图:

我现在的编程代码是这样的:

# -*- coding: utf-8 -*-
from flask import Flask, jsonify
app = Flask(__name__)

@app.route('/hashtags/' + b'<names>'.decode('utf-8'), methods=['GET'])
def get_hashtags(names):
    return jsonify({'Segmentation Hashtags': names})


if __name__ == '__main__':
    app.run(port=9876)

所以,基本上,&lt;names&gt; 是函数get_hashtag 的一个参数,用于使用jsonify 将我未来的主题标签传输到网络浏览器。 我需要找到用尖锐符号“#”加俄语字母转移我想要的任何主题标签的方法。据我所知,有一种 ASCII 编码方法,但我不知道如何正确使用它。 &lt;names&gt; 的结构为:“#привет”

提前致谢!

【问题讨论】:

    标签: python flask utf-8 pycharm non-ascii-characters


    【解决方案1】:

    您必须使用%23 而不是#,因为井号标记了URL 中的片段。 Wikipedia

    所以app.route 获取的实际 URL 是 /hashtag/

    #之后的内容好像无法获取。见this

    【讨论】:

      【解决方案2】:

      尝试在将您的 url 传递给您的视图方法之前对其进行解码,这样:

      @app.route('/hashtags/<names>'.encode('utf-8'), methods=['GET'])
      

      【讨论】:

      • 我有错误:@app.route('/hashtags/'.decode('utf-8'), methods=['GET']) AttributeError: 'str' object has没有属性“解码”
      • 我试过这个构造:@app.route('/hashtags/'.encode('utf-8'), methods=['GET']) 并且有一个问题:如果not string.startswith('/'): TypeError: startswith first arg must be bytes or a tuple of bytes, not str
      • @ksusha,这是另一个问题,请更新您的问题。
      • 这可能是因为您使用'/hashtags/&lt;names&gt;'.encode('utf-8') 将字符串转换为字节,就像我说的更新您的问题以制定更好的解决方案。
      猜你喜欢
      • 2018-09-26
      • 2022-09-27
      • 2020-12-04
      • 1970-01-01
      • 2022-07-07
      • 1970-01-01
      • 2015-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多