开发者社区> 问答> 正文

在没有框架的情况下使用Python获取当前请求的URL

我正在尝试获取不使用Web框架的Python中已请求的URL。

例如,在页面上(假设/main/index.html),用户单击URL转到/ main / foo / bar(/ foo / bar不存在)。然后,Apache(带有mod_wsgi)将用户重定向到/ main /处的PHP脚本,然后获取URL并在MySQL中搜索任何匹配的字段。然后返回该字段的其余部分。这在PHP中有所帮助:

$_SERVER["REQUEST_URI"]; 我宁愿不使用PHP,因为在数据库结构不断变化的同时,维护PHP代码变得越来越困难。

我敢肯定,总有一种更好的方法,任何提及将不胜感激。出于相关性考虑,这是否有可能(在Python中获取请求的URL)?尽管看起来很简单,但我应该只使用框架吗?

提前致谢,

杰米

注意:我不想出于安全目的使用GET。

展开
收起
祖安文状元 2020-02-23 16:08:58 757 0
1 条回答
写回答
取消 提交回答
  • 与PHP不同,Python是一种通用语言,没有内置的语言。

    收集此信息的方式取决于部署解决方案:

    CGI(主要是使用mod_python的Apache,已弃用):请参阅@Antti Haapala解决方案 WSGI(大多数其他部署解决方案):请参阅@gurney alex解决方案 但是您会遇到更多问题:会话处理,URL管理,Cookie,甚至只是简单的POST / GET解析。如果您不使用框架,则所有这些操作都需要手动完成。

    现在,如果您觉得框架过于强大(但实际上,像Django这样令人难以置信的工具是值得的),则可以使用bottle这样的微型框架。

    Microframeworks通常会为您带来繁重的工作,但无需复杂的设置或其他高级功能。瓶子实际上具有零设置,并且是一个文件库。

    你好词与瓶:

    from bottle import route, run, request
    
    @route('/hello/:name')
    def index(name='World'):
        return '<b>Hello %s! You are at %s</b>' % (name, request.path)
    
    run(host='localhost', port=8080)
    
    

    request.path包含您想要的内容,如果您访问http://127.0.0.1:8080/hello/you,您将获得:

    Hello you! You are at /hello/you
    
    2020-02-23 16:09:12
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载